/***************************************** 展示JCheckbox *************************************************/ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; public class ui25 extends JFrame implements ActionListener,ItemListener { Container c; JButton bot0; JCheckBox ck1,ck2,ck3,ck4,ck5; JLabel[] lab=new JLabel[5]; ImageIcon[] icon=new ImageIcon[5]; Random randomG=new Random(); int[] dcard=new int[52]; //用來記錄該牌是否已被發出 int[] mcard=new int[5];//記錄玩家手上的五張牌 public ui25() { super("Jcheckbox展示"); int i; int x; c=getContentPane(); for (i=0;i<=51;i=i+1) dcard[i]=0;//把牌設定為沒有發出去 /******** 先發五張牌*********/ for (i=0;i<5;i=i+1) { x=randomG.nextInt(52); while (dcard[x]!=0) x=randomG.nextInt(52); dcard[x]=1; mcard[i]=x+1;//把牌記起來 //取得牌的圖形,要牌的點數加一 if (mcard[i]<=9) icon[i] = new ImageIcon("bridge/0"+(mcard[i])+".GIF"); else icon[i] = new ImageIcon("bridge/"+(mcard[i])+".GIF"); lab[i]=new JLabel(icon[i]); } ck1=new JCheckBox(); ck2=new JCheckBox(); ck3=new JCheckBox(); ck4=new JCheckBox(); ck5=new JCheckBox(); c.setLayout(new FlowLayout(FlowLayout.CENTER)); bot0=new JButton("結束"); c.add(bot0); c.add(ck1);c.add(lab[0]); c.add(ck2);c.add(lab[1]); c.add(ck3);c.add(lab[2]); c.add(ck4);c.add(lab[3]); c.add(ck5);c.add(lab[4]); bot0.addActionListener(this); ck1.addItemListener(this); ck2.addItemListener(this); ck3.addItemListener(this); ck4.addItemListener(this); ck5.addItemListener(this); setSize(400,500); setVisible(true); } public void paint(Graphics g) { super.paint(g); } /***按鈕事件的傾聽方法****/ public void actionPerformed(ActionEvent e) //按鈕事件的處理方法 { if (e.getSource()==bot0) { System.exit(0); } repaint(); } /***checkbox事件的傾聽方法****/ public void itemStateChanged(ItemEvent e) //checkbox事件的處理方法 { int x,now; ImageIcon icona; x=randomG.nextInt(52); while (dcard[x]!=0) x=randomG.nextInt(52); dcard[x]=1; now=x+1; if (now<=9) icona = new ImageIcon("bridge/0"+(now)+".GIF"); else icona = new ImageIcon("bridge/"+(now)+".GIF"); if (e.getSource()==ck1 && ck1.isSelected()) { mcard[0]=x+1;//把牌記起來 lab[0].setIcon(icona); //換圖形 } else if (e.getSource()==ck2 && ck2.isSelected()) { mcard[1]=x+1;//把牌記起來 lab[1].setIcon(icona); //換圖形 } else if (e.getSource()==ck3 && ck3.isSelected()) { mcard[2]=x+1;//把牌記起來 lab[2].setIcon(icona); //換圖形 } else if (e.getSource()==ck4 && ck4.isSelected()) { mcard[3]=x+1;//把牌記起來 lab[3].setIcon(icona); //換圖形 } else if (e.getSource()==ck5 && ck5.isSelected()) { mcard[4]=x+1;//把牌記起來 lab[4].setIcon(icona); //換圖形 } repaint(); } public static void main(String args[]) //程式起點 { ui25 app=new ui25(); //畫圖 //處理視窗關閉要求 app.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0);} }); } }