/***************************************** 展示JRadioButton與ButtonGroup,用在選顏色 *************************************************/ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; public class ui28 extends JFrame implements ActionListener,ItemListener { Container c; JButton bot0,bot1; Color pencolor[]=new Color[5]; JRadioButton[] rb=new JRadioButton[5]; ButtonGroup rg = new ButtonGroup(); JLabel[] lab=new JLabel[5]; int cpt=0; int clear_mode=1;//一開始先清除畫面 int now_x=0,now_y=0; public ui28() { super("JRadioButton選顏色展示"); int i; int x; c=getContentPane(); pencolor[0]=Color.white; pencolor[1]=Color.green; pencolor[2]=Color.blue; pencolor[3]=Color.red; pencolor[4]=Color.yellow; c.setLayout(new FlowLayout(FlowLayout.CENTER)); bot0=new JButton("結束"); bot1=new JButton("清除"); c.add(bot0); c.add(bot1); lab[0]=new JLabel("白色"); lab[1]=new JLabel("綠色"); lab[2]=new JLabel("藍色"); lab[3]=new JLabel("紅色"); lab[4]=new JLabel("黃色"); for (i=0;i<5;i=i+1) { rb[i]=new JRadioButton(); c.add(rb[i]); c.add(lab[i]); rg.add(rb[i]); rb[i].addItemListener(this);//設定顏色選擇 } rb[0].setSelected(true);//先設定白色 bot0.addActionListener(this); bot1.addActionListener(this); addMouseMotionListener(new checkmouse());//設定滑鼠 setSize(350,500); setVisible(true); } public void paint(Graphics g) { if (clear_mode==1) super.paint(g); g.setColor(pencolor[cpt]); g.drawLine(now_x,now_y,now_x,now_y); } /***按鈕事件的傾聽方法****/ public void actionPerformed(ActionEvent e) //按鈕事件的處理方法 { if (e.getSource()==bot0) { System.exit(0); } else if (e.getSource()==bot1) { clear_mode=1; }//bot1 repaint(); } public void itemStateChanged(ItemEvent e)//item事件處理方法 { int ii; for (ii=0;ii<5;ii=ii+1) { if (rb[ii].isSelected()) cpt=ii; } repaint(); } /*****實作滑鼠移動事件處理物件 *******/ class checkmouse extends MouseMotionAdapter { public void mouseDragged(MouseEvent e) { now_x=e.getX(); now_y=e.getY(); clear_mode=0;//開始畫圖,不可以清掉舊資料 repaint(); //重新顯示一次 } }//checkmouse public static void main(String args[]) //程式起點 { ui28 app=new ui28(); //畫圖 //處理視窗關閉要求 app.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0);} }); } }