📄 demo.java
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
class Demo implements ActionListener,MouseListener,MouseMotionListener,ItemListener
{
JFrame f;
MyCanvas cans;
JButton bt[];
JLabel lb=new JLabel("颜色设定:",JLabel.RIGHT);
JLabel le=new JLabel("小组成员:");
JLabel lf=new JLabel("陈强 05205020402");
JLabel lh=new JLabel("高林 05205020407");
JLabel li=new JLabel("胡伟 05205020408");
JLabel lg=new JLabel("钟建 05205020438");
JComboBox cb[]=new JComboBox[2];
String color[]={"红色","黄色","绿色","蓝色","黑色","白色"};
String size[]={"1","2","3","4","5","6","7","8"};
Point dots[] = new Point[1000];
int dot=0;
int ys=0;
int dx=0;
int flag=0;
int startx,starty,endx,endy,height,width,chanx,chany;
Demo()
{
f = new JFrame("简单画图工具");
f.setSize(800,600);
Container con = f.getContentPane();
con.setLayout(null);
bt = new JButton[6];
bt[0] = new JButton("画直线");
con.add(bt[0]);
bt[0].setBounds(30,10,80,35);
bt[0].addActionListener(this);
bt[1] = new JButton("画曲线");
con.add(bt[1]);
bt[1].addActionListener(this);
bt[1].setBounds(120,10,80,35);
bt[2] = new JButton("画矩形");
con.add(bt[2]);
bt[2].addActionListener(this);
bt[2].setBounds(210,10,80,35);
bt[3] = new JButton("画椭圆");
con.add(bt[3]);
bt[3].addActionListener(this);
bt[3].setBounds(300,10,80,35);
bt[4]=new JButton("清理图板");
con.add(bt[4]);
bt[4].addActionListener(this);
bt[4].setBounds(390,10,100,35);
con.add(bt[4]);
bt[5]=new JButton("画圆");
con.add(bt[5]);
bt[5].addActionListener(this);
bt[5].setBounds(500,10,80,35);
con.add(lb);
con.add(le);
con.add(lf);
con.add(lh);
con.add(li);
con.add(lg);
lb.setBounds(600,10,80,35);
le.setBounds(620,60,120,35);
lf.setBounds(620,100,120,35);
lh.setBounds(620,140,120,35);
li.setBounds(620,180,120,35);
lg.setBounds(620,220,120,35);
cb[0]=new JComboBox();
cb[1]=new JComboBox();
for(int i=0;i<6;i++)
cb[0].addItem(color[i]);
cb[0].setBounds(680,10,70,35);
for(int i=0;i<8;i++)
cb[1].addItem(size[i]);
cb[1].setBounds(750,10,35,35);
cb[0].setBackground(Color.white);
cb[0].addItemListener(this);
con.add(cb[0]);
cb[1].setBackground(Color.white);
cb[1].addItemListener(this);
con.add(cb[1]);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
cans = new MyCanvas();
cans.setBackground(Color.white);
cans.addMouseListener(this);
cans.addMouseMotionListener(this);
con.add(cans);
cans.setBounds(30,60,580,480);
f.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
JButton bu=(JButton)e.getSource();
{for(int i=0;i<6;i++)
if(bu==bt[i])
flag=i;
}
}
public void mousePressed(MouseEvent e)
{
if((flag!=1)&&(flag!=4))
startx=e.getX();
starty=e.getY();
}
public void mouseReleased(MouseEvent e)
{
if(flag==1||flag==4)
dot=0;
else
{
endx=e.getX();
endy=e.getY();
if(flag!=0)
{
if((endx-startx)>=0)
{
width=endx-startx;
if((endy-starty)>=0)
height=endy-starty;
else
{
height=starty-endy;
starty=endy;
}
}
else
{
width=startx-endx;
if((endy-starty)>=0)
{
height=endy-starty;
startx=endx;
}
else
{
height=starty-endy;
startx=endx;
starty=endy;
}
}
}
cans.repaint();
}
}
public void mouseClicked(MouseEvent e)
{
}
public void mouseEntered(MouseEvent e)
{
}
public void mouseExited(MouseEvent e)
{
}
public void mouseMoved(MouseEvent e)
{
}
public void mouseDragged(MouseEvent e)
{
if(flag==1||flag==4)
{
dots[dot] = new Point(e.getX(),e.getY());
dot++;
cans.repaint();
}
}
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()==cb[0])
{
int i=0;
String str=(String)e.getItem();
for(int j=0;j<6;j++)
if(str==color[j])
ys=cb[0].getSelectedIndex();
}
if(e.getSource()==cb[1])
{
String str=(String)e.getItem();
for(int j=0;j<8;j++)
if(str==size[j])
dx=cb[1].getSelectedIndex();
}
}
class MyCanvas extends Canvas
{
public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
switch(ys)
{
case 0: g2.setPaint(Color.red);break;
case 1: g2.setPaint(Color.yellow);break;
case 2: g2.setPaint(Color.green);break;
case 3: g2.setPaint(Color.blue);break;
case 4: g2.setPaint(Color.black);break;
case 5: g2.setPaint(Color.white);break;
}
switch(dx)
{
case 0: g2.setStroke(new BasicStroke(3));break;
case 1: g2.setStroke(new BasicStroke(5));break;
case 2: g2.setStroke(new BasicStroke(7));break;
case 3: g2.setStroke(new BasicStroke(9));break;
case 4: g2.setStroke(new BasicStroke(11));break;
case 5: g2.setStroke(new BasicStroke(13));break;
case 6: g2.setStroke(new BasicStroke(15));break;
case 7: g2.setStroke(new BasicStroke(17));break;
//case 8: g2.setStroke(new BasicStroke(19));break;
}
if(flag==0)
g2.draw(new Line2D.Double(startx,starty,endx,endy));
if(flag==1)
for(int i=0;i<dot-1;i++)
g2.draw(new Line2D.Double(dots[i],dots[i+1]));
if(flag==2)
g2.draw(new Rectangle2D.Double(startx,starty,width,height));
if(flag==3)
g2.draw(new Ellipse2D.Double(startx,starty,width,height));
if(flag==4){
g2.setPaint(Color.white);
g2.setStroke(new BasicStroke(80));
for(int i=0;i<dot-1;i++)
g2.draw(new Line2D.Double(dots[i],dots[i+1]));
}
if(flag==5){
if(width>height){
g2.draw(new Ellipse2D.Double(startx,starty,width,width));
}else{
g2.draw(new Ellipse2D.Double(startx,starty,height,height));
}
}
}
public void update(Graphics g)
{
paint(g);
}
}
public static void main(String args[])
{
new Demo();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -