展开全部
importjava.awt.*;
importjava.awt.geom.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.util.*;
publicclassTest{
publicstaticvoidmain(String[]args){
MyFrameframe=newMyFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
classMyFrameextendsJFrameimplementsActionListener{
MyPanelpanel=newMyPanel();
JToolBart;
JButtonobj1;
JButtonobj2;
JButtonobj3;
publicMyFrame(){
obj1=newJButton("Line");
obj2=newJButton("yuan");
obj3=newJButton("juxing");
t=newJToolBar();
obj1.addActionListener(this);
obj2.addActionListener(this);
obj3.addActionListener(this);
t=newJToolBar();
t.add(obj1);
t.add(obj2);
t.add(obj3);
ButtonGroupbuttonGroup=newButtonGroup();
setTitle("DrawTest");
setSize(W,H);
ContainercontentPane=getContentPane();
contentPane.add(t,BorderLayout.NORTH);
contentPane.add(panel,BorderLayout.CENTER);
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==obj1)
panel.shape=0;//直线
if(e.getSource()==obj2)
panel.shape=1;//圆
if(e.getSource()==obj3)
panel.shape=2;//长方形
panel.repaint();//这里加一句
}
publicstaticfinalintW=400;
publicstaticfinalintH=400;
}
classMyPanelextendsJPanelimplementsMouseListener{
privateArrayListpointList=newArrayList();
intshape=-1;
intx1=0,y1=0;
intx2=0,y2=0;
inti=0;
MyPanel(){
addMouseListener(this);
}
publicvoidmousePressed(MouseEvente){
x1=e.getX();y1=e.getY();
pointList.add(newPoint(x1,y1));
}
publicvoidmouseReleased(MouseEvente){
x2=e.getX();y2=e.getY();
pointList.add(newPoint(x2,y2));
repaint();
}
publicvoidmouseClicked(MouseEvente){}
publicvoidmouseMoved(MouseEvente){}
publicvoidmouseEntered(MouseEvente){}
publicvoidmouseExited(MouseEvente){}
publicvoidpaintComponent(Graphicsg){
super.paintComponent(g);
System.out.println(pointList.size());
for(inti=0;i
switch(shape){
case0:Pointp1=pointList.get(i);
Pointp2=pointList.get(i+1);
g.drawLine(p1.x,p1.y,p2.x,p2.y);
break;//如果想让636f70793231313335323631343130323136353331333337386631三个图形一起显示去掉这里的break;语句
case1:p1=pointList.get(i);
p2=pointList.get(i+1);
intwidth1=p2.x-p1.x;
intheight1=p2.y-p1.y;
g.drawOval(p1.x,p1.y,width1,height1);
break;//如果想让三个图形一起显示去掉这里的break;语句
case2:p1=pointList.get(i);
p2=pointList.get(i+1);
intwidth2=p2.x-p1.x;
intheight2=p2.y-p1.y;
g.drawRect(p1.x,p1.y,width2,height2);
break;
default:System.out.println("pleaseonceagan!");
break;
}
}
}
}