天天看點

java 麼清除已畫的圖形_[求助]怎麼樣消除之前畫過的軌迹

[CODE]import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class J_DrawDemo extends JFrame implements ActionListener

{

panel pl=new panel();//生成panel的一個對象

JPanel jpb=new JPanel();//生成jpb容器,用于放置按鈕

JRadioButton jb1;

JRadioButton jb2;

JRadioButton jb3;

JRadioButton jb4;

public J_DrawDemo()

{

super("畫圖程式");

jb1=new JRadioButton(" 畫直線 ",true);//生成各個按鈕對象

jb2=new JRadioButton(" 畫橢圓 ");

jb3=new JRadioButton(" 畫矩形 ");

jb4=new JRadioButton(" 自由繪圖 ");

pl.shape=0;//預設是畫直線

ButtonGroup bg=new ButtonGroup();

bg.add(jb1);

bg.add(jb2);

bg.add(jb3);

bg.add(jb4);

jb1.addActionListener(this);//注冊按鈕監聽器

jb2.addActionListener(this);

jb3.addActionListener(this);

jb4.addActionListener(this);

jpb.setBorder(BorderFactory.createEtchedBorder());//設定jpb邊界

pl.setBorder(BorderFactory.createEtchedBorder());//設定pl邊界

jpb.add(jb1);//在按鈕加入jpb

jpb.add(jb2);

jpb.add(jb3);

jpb.add(jb4);

ButtonGroup buttonGroup=new ButtonGroup();//定義一個按鈕組,實作按鈕互斥

Container cp=getContentPane();//獲得容器

cp.add(jpb,BorderLayout.SOUTH);//将工具條加入容器

cp.add(pl,BorderLayout.CENTER);//将pl加入容器

cp.setBackground(Color.white);

setSize(600,500);

this.setResizable(false);//設定窗體大小不可變

setLocation(200,100);//設定窗體在螢幕的顯示位置

setVisible(true);//設定窗體可見

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出方式

}

public void actionPerformed(ActionEvent e)//按鈕實作動作并執行

{

if(e.getSource()==jb1)

pl.shape=0;

if(e.getSource()==jb2)

pl.shape=1;

if(e.getSource()==jb3)

pl.shape=2;

if(e.getSource()==jb4)

pl.shape=3;

}

public static void main(String[] args)

{

new J_DrawDemo();//調用J_DrawDemo類構造函數

}

}

class panel extends JPanel //定義一個JPanel的字類

{

int shape=-1;

int startX=0,startY=0;

int endX=0,endY=0;

int flag=0;

public panel()

{

//setBackground(Color.white);

addMouseListener(new MouseAdapter()

{

public void mousePressed(MouseEvent e)//滑鼠按下事件

{

if(shape==3)//當為自由畫線時,執行下面語句

{

endX=e.getX();

endY=e.getY();

}

else

{

startX=e.getX();

startY=e.getY();

}

}

}

);//注冊滑鼠動作監聽器

addMouseMotionListener(new MouseMotionAdapter()

{

public void mouseDragged(MouseEvent e)//滑鼠拖拽事件

{

if(shape==3)//當為畫自由線時拖動滑鼠動作才執行

{

startX=endX;

startY=endY;

endX=e.getX();

endY=e.getY();

repaint();

}

else//當選擇畫圖功能不是自由畫線時,則執行下面語句

{

endX=e.getX();

endY=e.getY();

repaint();

}

}

}

);

}

public void paintComponent(Graphics g)//實作畫圖

{

switch(shape)

{

case 0:

super.paintComponent(g);

g.drawLine(startX,startY,endX,endY);//畫直線

break;

case 1:

super.paintComponent(g);

int width=endX-startX;

int height=endY-startY;

g.drawOval(startX,startY,width,height);//畫橢圓

break;

case 2:

super.paintComponent(g);

width=endX-startX;

height=endY-startY;

g.drawRect(startX,startY,width,height);//畫矩形

break;

case 3:

g.drawLine(startX,startY,endX,endY);//自由畫線

break;

}

}

}[/CODE]

幫你改了一點點,你看看吧,像這種選擇項最好不是用普通按鈕來做

用單選按鈕來做

否則别人不知道按了哪個

java 麼清除已畫的圖形_[求助]怎麼樣消除之前畫過的軌迹

可惜不是你,陪我到最後