⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graphicsdemopane.java

📁 使用java application 的共享白板系统
💻 JAVA
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;

public class GraphicsDemoPane extends JPanel 
				implements PropertyChangeListener {
                                    
 
	public GraphicsDemoPane() {
            
		super(true);			// Double buffer
		
		this.setLayout(new GridBagLayout());
		GridBagConstraints c = new GridBagConstraints();
		c.gridx = 0;
		c.gridy = 0;
		c.gridwidth = 1;
		c.gridheight = 1;
		c.weightx = 0.0;
		c.weighty = 0.0;
		c.fill = GridBagConstraints.NONE;
		c.anchor = GridBagConstraints.CENTER;

		// Create and add the button panel
		JPanel colorPanel = new JPanel();
		colorPanel.setLayout(new GridLayout(0, 3, 2, 2));
		colorButtons = new JButton[buttonColors.length];
		for (int i = 0; i < buttonColors.length; i++) {
			JButton button = new JButton(new ColorFillIcon(buttonColors[i]));
			colorButtons[i] = button;
			colorPanel.add(button);
			button.putClientProperty(DRAW_COLOR, buttonColors[i]);
								
			button.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					JButton b = (JButton)evt.getSource();
					
					Color color = (Color)b.getClientProperty(DRAW_COLOR);
					Icon g = b.getIcon();
					colorLabel.setIcon(g);
					graphicOps.setColor(color);
				}
			});
		}

		this.add(colorPanel, c);

		// Create and add the shape selection panel
		JPanel shapePanel = new JPanel();
		shapePanel.setLayout(new GridLayout(0, 3, 2, 2));
		shapeButtons = new JButton[shapeList.length];
		for (int i = 0; i < shapeList.length; i++) {
			JButton button = new JButton(new GraphicShapeIcon(shapeList[i]));
			shapeButtons[i] = button;
			shapePanel.add(button);
			button.putClientProperty(DRAW_SHAPE, new Integer(shapeList[i]));

			button.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent evt) {
					JButton b = (JButton)evt.getSource();
					int shape = ((Integer)b.getClientProperty(DRAW_SHAPE)).intValue();
					shapeLabel.setIcon(b.getIcon());
					graphicOps.setShape(shape);
				}
			});
		}

		c.gridy++;
		c.insets = new Insets(16, 0, 0, 0);
		this.add(shapePanel, c);

		// Add a dummy component that takes
		// all the spare space in the
		// right-hand panel
		c.gridy++;
		c.weighty = 1.0;
		c.insets = new Insets(0, 0, 0, 0);
		this.add(new JComponent(){}, c);

		// Add the "Clear" and "Undo" buttons
		c.gridy++;
		c.weighty = 0.0;
		JPanel buttonPanel = new JPanel();
		clearButton = new JButton("Clear");
		undoButton = new JButton("Undo");
		printButton = new JButton("Print");
		Font font = new Font("Serif", Font.BOLD, 12);
		clearButton.setFont(font);
		undoButton.setFont(font);
		printButton.setFont(font);
		buttonPanel.add(clearButton);
		buttonPanel.add(undoButton);
		buttonPanel.add(printButton);
		this.add(buttonPanel, c);

		clearButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				graphicOps.clearCanvas();
			}
		});

		undoButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				graphicOps.removeLast();
			}
		});

		printButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				graphicOps.printCanvas();
			}
		});

		// Place labels with the currently selected
		// color and shapes underneath the color panel
		c.gridy++;
		c.weighty = 0.0;
		c.weightx = 1.0;
		c.fill = GridBagConstraints.BOTH;
		c.insets = new Insets(8, 0, 0, 0);
		JPanel lowerPanel = new JPanel();
		this.add(lowerPanel, c);
		lowerPanel.setLayout(new FlowLayout(FlowLayout.CENTER, 4, 4));

		colorLabel.setVerticalTextPosition(SwingConstants.BOTTOM);
		colorLabel.setHorizontalTextPosition(SwingConstants.CENTER);
		colorLabel.setHorizontalAlignment(SwingConstants.CENTER);
		colorLabel.setVerticalAlignment(SwingConstants.BOTTOM);
		lowerPanel.add(colorLabel);
		
		shapeLabel.setVerticalTextPosition(SwingConstants.BOTTOM);
		shapeLabel.setHorizontalTextPosition(SwingConstants.CENTER);
		shapeLabel.setHorizontalAlignment(SwingConstants.CENTER);
		shapeLabel.setVerticalAlignment(SwingConstants.BOTTOM);
		lowerPanel.add(shapeLabel);

		// Disable clear/undo/print buttons
		clearButton.setEnabled(false);
		undoButton.setEnabled(false);
		printButton.setEnabled(false);
	}

	// Associate drawing area
	public void setDrawingArea(GraphicOps graphicOps) {
		this.graphicOps = graphicOps;
	}

	// Select initial color and shape
	public void selectTools() {
		colorButtons[0].doClick();	// Draw with black
		shapeButtons[0].doClick();	// Draw a line
	}

	// PropertyChangeListener Interface
	public void propertyChange(PropertyChangeEvent evt) {
		if (evt.getPropertyName().equals(GraphicOps.SHAPE_PROPERTY)) {
			int count = ((Integer)evt.getNewValue()).intValue();
			boolean state = (count > 0);

			clearButton.setEnabled(state);
			undoButton.setEnabled(state);
			printButton.setEnabled(state);
		}
	}

	// Labels showing the current color and current shape
	protected JLabel colorLabel = new JLabel("Color");
	protected JLabel shapeLabel = new JLabel("Shape");

	// Clear, undo and print buttons
	protected JButton clearButton;
	protected JButton undoButton;
	protected JButton printButton;
	
	// Coloring buttons
	private static Color[] buttonColors = {
							
//            Color.black, Color.blue,
//									Color.cyan, Color.darkGray,
//									Color.gray, Color.green,
//									Color.lightGray, Color.magenta,
//									Color.orange, Color.pink,
//									Color.red, Color.yellow,
//									Color.white };
                           new Color(0),Color.lightGray,
                           new Color(204,0,0),new Color(102,204,204),
                           new Color(102,153,102),Color.blue,
                           new Color(153,0,204),new Color(16762880),
                           new Color(16756655),new Color(153,0,0),
                           new Color(255,153,204),new Color(51,153,204),
                           
                           Color.WHITE,new Color(204,204,204),
                           Color.RED,Color.cyan,
                           new Color(65280),new Color(102,153,255),
                           new Color(16711935),new Color(16776960),
		           new Color(204,153,153),new Color(255,0,204),
		           new Color(255,153,255),new Color(153,0,255),
 
        
        };
	private JButton[] colorButtons;

	// Shape buttons
	private static int[] shapeList = {
									GraphicOps.DRAWN_LINE,
									GraphicOps.DRAWN_RECT,
									GraphicOps.DRAWN_ROUND_RECT,
									GraphicOps.FILLED_RECT,
									GraphicOps.FILLED_ROUND_RECT,
									GraphicOps.DRAWN_OVAL,
									GraphicOps.FILLED_OVAL };
	private JButton[] shapeButtons;
	
	// Connection to drawing area
	private GraphicOps graphicOps;

	// Property names
	private static final String DRAW_COLOR = "Draw_color";
	private static final String DRAW_SHAPE = "Draw_shape";	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -