📄 复件 byc.java
字号:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.awt.geom.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.colorchooser.*;
import javax.swing.filechooser.*;
import java.io.*;
public class byc
{
public static void main(String[] args)
{
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
}
catch(Exception e) {
e.printStackTrace();
}
MouseFrame frame = new MouseFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class MouseFrame extends JFrame
{
DefaultColorSelectionModel model=new DefaultColorSelectionModel();
JColorChooser colorchooser=new JColorChooser(model);
JMenuBar jMenuBar1 = new JMenuBar();
JMenu jMenuFile = new JMenu();
JMenu jMenuHelp=new JMenu();
JMenuItem jMenuFileExit = new JMenuItem();
JMenuItem jMenuFileSave=new JMenuItem();
JMenuItem jMenuAbout=new JMenuItem();
JButton button[]=new JButton[4];
JToolBar toolbar=new JToolBar();
int x1=0,y1=0,x2=0,y2=0;
Color color;
int m=3;
public MouseFrame()
{
setTitle("画图程序");
setSize(800, 500);
button[0]=new JButton("点");
button[1]=new JButton("线");
button[2]=new JButton("圆");
button[3]=new JButton("矩形");
jMenuFile.setText("File");
jMenuHelp.setText("Help");
jMenuFileExit.setText("Exit");
jMenuFileSave.setText("Save");
jMenuAbout.setText("About");
jMenuFileExit.addActionListener(new MousePanel());
jMenuFileSave.addActionListener( new MousePanel());
jMenuAbout.addActionListener(new MousePanel());
jMenuFile.add(jMenuFileExit);
jMenuFile.add(jMenuFileSave);
jMenuHelp.add(jMenuAbout);
jMenuBar1.add(jMenuFile);
jMenuBar1.add(jMenuHelp);
for(int i=0;i<4;i++)
{
toolbar.add(button[i]);
button[i].addActionListener(new MousePanel());
}
MousePanel panel = new MousePanel();
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
p1.add(toolbar);
p2.add(colorchooser);
p3.add(jMenuBar1);
Container contentPane = getContentPane();
contentPane.add(p1,BorderLayout.EAST);
contentPane.add(p3,BorderLayout.NORTH);
contentPane.add(panel,BorderLayout.CENTER);
contentPane.add(p2,BorderLayout.WEST);
model.addChangeListener(new MousePanel());
}
class MousePanel extends JPanel implements ActionListener,ChangeListener
{
public MousePanel()
{
/*squares = new ArrayList();
lines=new ArrayList();
ellipses=new ArrayList();
points=new ArrayList();
current = null;
line=null;
ellipse=null;
point=null;*/
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMotionHandler());
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()== jMenuFileExit){
System.exit(0);
}
if(e.getSource()==jMenuFileSave){
JFrame frame =new Savefile();
frame.dispose();
frame.pack();
frame.setVisible(true);
}
if(e.getSource()==jMenuAbout){
JFrame dlg = new AboutBox();
dlg.pack();
dlg.show();
}
for(int i=0;i<4;i++)
if(e.getSource()==button[i])
m=i;
}
public void stateChanged(ChangeEvent e)
{
color =colorchooser.getColor();
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(color);
if(m==3)
{
g.fillRect(x1,y1,Math.abs(x1-x2),Math.abs(y1-y2));
g.setColor(color);}
else if(m==2){
g.fillOval(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x1-x2),Math.abs(y1-y2));
g.setColor(color);}
else if(m==1){
g.drawLine(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x1-x2),Math.abs(y1-y2));
g.setColor(color);}
else{
g.fillOval(x1,y1,3,3);
g.setColor(color);}
}
/* private ArrayList squares,lines,ellipses,points;
Line2D line;
Ellipse2D ellipse;
Rectangle2D current;
Point2D point;*/
private class MouseHandler extends MouseAdapter
{
public void mousePressed(MouseEvent e)
{
x1=e.getX();
y1=e.getY();
}
public void mouseReleased(MouseEvent e)
{
x2=e.getX();
y2=e.getY();
repaint();
}
}
private class MouseMotionHandler implements MouseMotionListener
{
public void mouseMoved(MouseEvent event)
{
}
public void mouseDragged(MouseEvent e)
{
x2=e.getX();
y2=e.getY();
repaint();
}
}
}
}
class Savefile extends JFrame {
public Savefile(){
super("save Picture");
final JTextArea ta=new JTextArea(5,20);
ta.setMargin(new Insets(5,5,5,5));
ta.setEditable(false);
JScrollPane sp=new JScrollPane(ta);
final JFileChooser fc=new JFileChooser();
JButton openBtn=new JButton("打开文件");
openBtn.addActionListener(new ActionListener(){
public void actionPerformed (ActionEvent e){
int returnVal=fc.showOpenDialog(Savefile.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
File file=fc.getSelectedFile();
ta.append("打开:"+file.getName()+".\n");
}else ta.append("取消打开文件命令.\n");
}
});
JButton saveBtn=new JButton("保存文件");
saveBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
int returnVal=fc.showSaveDialog(Savefile.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
File file=fc.getSelectedFile();
ta.append("Saving:"+file.getName()+".\n");
}else ta.append("取消保存命令.\n");
}
});
JPanel buttonPanel=new JPanel();
buttonPanel.add(openBtn);
buttonPanel.add(saveBtn);
openBtn.setNextFocusableComponent(saveBtn);
saveBtn.setNextFocusableComponent(openBtn);
Container c=getContentPane();
c.add(buttonPanel,BorderLayout.NORTH);
c.add(sp,BorderLayout.CENTER);
}
}
class AboutBox extends JFrame implements ActionListener {
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel insetsPanel1 = new JPanel();
JPanel insetsPanel2 = new JPanel();
JPanel insetsPanel3 = new JPanel();
JButton button1 = new JButton();
JLabel imageLabel = new JLabel();
JLabel label1 = new JLabel();
JLabel label2 = new JLabel();
JLabel label3 = new JLabel();
JLabel label4 = new JLabel();
ImageIcon image1 = new ImageIcon();
BorderLayout borderLayout1 = new BorderLayout();
BorderLayout borderLayout2 = new BorderLayout();
FlowLayout flowLayout1 = new FlowLayout();
GridLayout gridLayout1 = new GridLayout();
String product = "绘图系统";
String version = "1.0";
String copyright = "Copyright (c) 2004";
String comments = "Protected by Law";
public AboutBox() {
image1 = new ImageIcon("about.png");
imageLabel.setIcon(image1);
this.setTitle("About");
panel1.setLayout(borderLayout1);
panel2.setLayout(borderLayout2);
insetsPanel1.setLayout(flowLayout1);
insetsPanel2.setLayout(flowLayout1);
insetsPanel2.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
gridLayout1.setRows(4);
gridLayout1.setColumns(1);
label1.setText(product);
label2.setText(version);
label3.setText(copyright);
label4.setText(comments);
insetsPanel3.setLayout(gridLayout1);
insetsPanel3.setBorder(BorderFactory.createEmptyBorder(10, 60, 10, 10));
button1.setText("Ok");
button1.addActionListener(this);
insetsPanel2.add(imageLabel, null);
panel2.add(insetsPanel2, BorderLayout.WEST);
this.getContentPane().add(panel1, null);
insetsPanel3.add(label1, null);
insetsPanel3.add(label2, null);
insetsPanel3.add(label3, null);
insetsPanel3.add(label4, null);
panel2.add(insetsPanel3, BorderLayout.CENTER);
insetsPanel1.add(button1, null);
panel1.add(insetsPanel1, BorderLayout.SOUTH);
panel1.add(panel2, BorderLayout.NORTH);
setResizable(true);
}
//Overridden so we can exit when window is closed
public void actionPerformed(ActionEvent e){
if(e.getSource()==button1)
dispose();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -