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 + -
显示快捷键?