shapetalk.java

来自「java画图板」· Java 代码 · 共 1,383 行 · 第 1/4 页

JAVA
1,383
字号
	 		   try{
				   ps.writeObject(o);   //output to the server
				   ps.flush();
			   }catch(IOException ex){
				   ex.printStackTrace(); //output the error
			   }
			 }
		}
	}

	
	Talk talkSec;	//the name of the section
	
	ShapeTalk(){}
	
	/** to run the main function and make it to a object*/
	public void go()
	{
		//draw by pencil
		gPath = new GeneralPath();
		//AffineTransform
		changeMatrix = new AffineTransform();
				
		//frame
		frame = new JFrame("Shape Talk");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	//set exit when frame close
		
		//menu
		menuBar = new JMenuBar();
		frame.setJMenuBar(menuBar);
		file = new JMenu("File");
		edit = new JMenu("Edit");
		color = new JMenu("Color");
		help = new JMenu("Help");
		menuBar.add(file);
		menuBar.add(edit);
		menuBar.add(help);
		newImage = new JMenuItem("New");
		open = new JMenuItem("Open");
		save = new JMenuItem("Save");
		saveas = new JMenuItem("Save As");
		quit = new JMenuItem("Quit");
		questions = new JMenuItem("Questions");
		about = new JMenuItem("About");
		colorChooser = new JMenuItem("Choose Color");	
		buttonReturn = new JMenuItem("Undo");
		buttonResume = new JMenuItem("ReDo");
		buttonCopy = new JMenuItem("Copy");
		buttonClear = new JMenuItem("Clear");
		file.add(open);
		file.add(save);
		file.add(quit);
		edit.add(buttonReturn);
		edit.add(buttonResume);
		edit.add(buttonCopy);
		edit.add(buttonClear);
		help.add(about);	
		//key
		newImage.setAccelerator(KeyStroke.getKeyStroke("control released N"));
		open.setAccelerator(KeyStroke.getKeyStroke("control released O"));
		save.setAccelerator(KeyStroke.getKeyStroke("control released S"));
		quit.setAccelerator(KeyStroke.getKeyStroke("control released Q"));
		questions.setAccelerator(KeyStroke.getKeyStroke("control released H"));
		about.setAccelerator(KeyStroke.getKeyStroke("control released A"));
		colorChooser.setAccelerator(KeyStroke.getKeyStroke("control released C"));
		buttonReturn.setAccelerator(KeyStroke.getKeyStroke("control released Z"));
		buttonResume.setAccelerator(KeyStroke.getKeyStroke("control shift released Z"));
		buttonCopy.setAccelerator(KeyStroke.getKeyStroke("control released C"));
		buttonClear.setAccelerator(KeyStroke.getKeyStroke("control released B"));
		
		//main
		mainPanel = new JPanel(new BorderLayout());
		JPanel leftPanel = new JPanel(new GridLayout(20, 1));
		centerCenter = new DrawPanel();
		unDoPanel = new DrawPanel();
		centerCenter.setBackground(Color.WHITE);
		centerCenter.repaint();
		
		thickness = new JSlider(1, 40, 1);
		
		JPanel rightPanel = new JPanel(new GridLayout(2, 1));
		JPanel bottomPanel = new JPanel(new GridLayout(1,6));
		JPanel upperPanel = new JPanel(new BorderLayout());
		centerPanel = new JPanel(new BorderLayout());
		JPanel centerUpper = new JPanel(new GridLayout(1, 5));
		centerPanel.add(centerCenter, BorderLayout.CENTER);
		centerPanel.add(centerUpper, BorderLayout.NORTH);
		imageTool = new JToolBar();
		frame.getContentPane().add(imageTool, BorderLayout.NORTH);
		frame.getContentPane().add(mainPanel, BorderLayout.CENTER);
		frame.getContentPane().add(rightPanel, BorderLayout.EAST);
		mainPanel.add(leftPanel, BorderLayout.WEST);
		mainPanel.add(centerPanel, BorderLayout.CENTER);
		JPanel bottomPanel1 = new JPanel(new BorderLayout());
		mainPanel.add(bottomPanel1, BorderLayout.SOUTH);
		mainPanel.add(upperPanel, BorderLayout.NORTH);
		
		//Author and Bottom
		JLabel authorBottom = new JLabel("By Ding Cong");
		bottomPanel1.add(authorBottom, BorderLayout.WEST);
		bottomPanel1.add(bottomPanel, BorderLayout.EAST);
		JLabel sizeXLable = new JLabel("    X size:");
		JLabel sizeYLable = new JLabel("    Y size:");
		JLabel posXLable = new JLabel("    X pos:");
		JLabel posYLable = new JLabel("    Y pos:");
		JLabel degreeLable = new JLabel("    Deg:");
		sizeXText = new JLabel("0");
		sizeYText = new JLabel("0");
		posXText = new JLabel("0");
		posYText = new JLabel("0");
		degreeText = new JLabel("0" );
		
		JPanel sizeXPanel = new JPanel(new BorderLayout());
		JPanel sizeYPanel = new JPanel(new BorderLayout());
		JPanel posXPanel = new JPanel(new BorderLayout());
		JPanel posYPanel = new JPanel(new BorderLayout());
		JPanel degreePanel = new JPanel(new BorderLayout());
		sizeXPanel.add(sizeXLable, BorderLayout.WEST);
		sizeXPanel.add(sizeXText, BorderLayout.CENTER);
		sizeYPanel.add(sizeYLable, BorderLayout.WEST);
		sizeYPanel.add(sizeYText, BorderLayout.CENTER);
		posXPanel.add(posXLable, BorderLayout.WEST);
		posXPanel.add(posXText, BorderLayout.CENTER);
		posYPanel.add(posYLable, BorderLayout.WEST);
		posYPanel.add(posYText, BorderLayout.CENTER);
		degreePanel.add(degreeLable, BorderLayout.WEST);
		degreePanel.add(degreeText, BorderLayout.CENTER);
		bottomPanel.add(sizeXPanel);
		bottomPanel.add(sizeYPanel);
		bottomPanel.add(posXPanel);
		bottomPanel.add(posYPanel);
		
		//left JRadioButton
		curveI = new ImageIcon("img/curve.gif"); 
		ellipseI = new ImageIcon("img/ellipse.gif");
		eraserI = new ImageIcon("img/eraser.gif");
		fillI = new ImageIcon("img/fill.gif");
		lineI = new ImageIcon("img/line.gif");
		pencilI = new ImageIcon("img/pencil.gif");
		rectangleI = new ImageIcon("img/rectangle.gif");
		roundrectangleI = new ImageIcon("img/roundrectangle.gif");
		wordI = new ImageIcon("img/word.gif");
		mouseI = new ImageIcon("img/mouse.gif");
		strawI = new ImageIcon("img/straw.gif");
				
		curve = new JToggleButton(curveI);
		ellipse = new JToggleButton(ellipseI);
		eraser = new JToggleButton(eraserI);
		fill = new JToggleButton(fillI);
		line = new JToggleButton(lineI, true);
		pencil = new JToggleButton(pencilI);
		rectangle = new JToggleButton(rectangleI);
		roundrectangle = new JToggleButton(roundrectangleI);
		word = new JToggleButton(wordI);
		mouse = new JToggleButton(mouseI);
		straw = new JToggleButton(strawI);
		
		
		/**functions of these JToggleButton*/
		curve.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				state = 0;
			}
		});
		ellipse.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				state = 1;
			}
		});
		eraser.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				state = 2;
			}
		});
		fill.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				state = 3;
			}
		});
		line.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				state = 4;
			}
		});
		pencil.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				state = 5;
			}
		});
		rectangle.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				state = 6;
			}
		});
		roundrectangle.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				state = 7;
			}
		});
		word.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				state = 8;
			}
		});
		
		straw.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				state = 9;
			}
		});
		
		mouse.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				state = 10;
			}
		});
		
		//add jtoggle button
		tool = new ButtonGroup();
		tool.add(curve);
		tool.add(ellipse);
		tool.add(eraser);
		tool.add(fill);
		tool.add(line);
		tool.add(pencil);
		tool.add(rectangle);
		tool.add(roundrectangle);
		tool.add(word);
		tool.add(straw);
		tool.add(mouse);
		
		imageTool.add(line);
		imageTool.add(rectangle);
		imageTool.add(roundrectangle);
		imageTool.add(ellipse);
		imageTool.add(pencil);
		imageTool.add(eraser);
		imageTool.add(fill);
		imageTool.add(word);
		imageTool.add(straw);
		imageTool.add(mouse);

		drawButton = new JRadioButton("Draw", true);
		fillButton = new JRadioButton("Fill");
		changeButton = new JRadioButton("Change");
		drawChange = new ButtonGroup();
		JLabel drawLabel = new JLabel("Draw:");
		JLabel changeLabel = new JLabel("Change:");
		drawChange.add(drawButton);
		drawChange.add(fillButton);
		drawChange.add(changeButton);
		leftPanel.add(drawLabel);
		leftPanel.add(drawButton);
		leftPanel.add(fillButton);
		leftPanel.add(changeLabel);
		translation = new JRadioButton("Move", true);
		scale = new JRadioButton("Scale");
		rotate = new JRadioButton("Rotate");
		shear = new JRadioButton("Shear");
	
		selectChange = new ButtonGroup();
		selectChange.add(translation);
		selectChange.add(scale);
		selectChange.add(rotate);
		selectChange.add(shear);

		leftPanel.add(translation);
		leftPanel.add(scale);
		leftPanel.add(rotate);
		leftPanel.add(shear);

		//right
		JPanel rightUpper = new JPanel(new BorderLayout());
		rightPanel.add(rightUpper);
		talkSec = new Talk();
		rightPanel.add(talkSec);
		
		//right color chooser
		colorSet = new JColorChooser(Color.black);
		JPanel thicknessPanel = new JPanel(new BorderLayout());
		JLabel thicknessLabel = new JLabel("  Thickness(1-40):  ");
		thicknessPanel.add(thicknessLabel, BorderLayout.WEST);
		thicknessPanel.add(thickness, BorderLayout.CENTER);
		rightUpper.add(thicknessPanel, BorderLayout.NORTH);
		rightUpper.add(colorSet, BorderLayout.CENTER);
		
		/**quit function*/
		quit.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e) 
			{
				System.exit(0);
			}
		});
		
		/**about the author */
		about.addActionListener(new ActionListener() 
		{
			public void actionPerformed(ActionEvent e) 
			{
				JOptionPane.showMessageDialog(frame, "Made by Ding Cong", "Author Information", JOptionPane.INFORMATION_MESSAGE);
			}
		});
			
		/**the button undo */
		buttonReturn.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent ev)
			{
				if(centerCenter.length() < 1)
					return;
				if(connected == 0)
				{
					unDoPanel.add(centerCenter.getObj(centerCenter.length()-1));
					centerCenter.remove(centerCenter.length()-1);
					centerCenter.repaint();
				}else if(connected == 1)
				{
					talkSec.drawToServer(new ImageInfo(2));
				}
			}
		}	
		);
		

⌨️ 快捷键说明

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