[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]
幫你改了一點點,你看看吧,像這種選擇項最好不是用普通按鈕來做
用單選按鈕來做
否則别人不知道按了哪個

可惜不是你,陪我到最後