Javaプログラミング

Javaアプレットのチェックボックスのサンプルです。

Home > サンプル集 > アプレットサンプル集 > チェックボックス


チェックボックス

このページには、以下のサンプルを掲載しています。 下の項目をクリックをすると各サンプルにジャンプします。 ※2週間以内の新着記事はNewアイコン、更新記事はUpアイコンが表示されます。
  1. チェックボックスのサンプル ( CheckboxSample01.java )  
  2. アイコン付きチェックボックス( CheckboxSample02.java )  

■チェックボックスのサンプル

[ サンプルプログラムのソースコード - CheckboxSample01.java - ]
  1. package sample.applet.action;
  2. import java.awt.BorderLayout;
  3. import java.awt.Checkbox;
  4. import java.awt.Color;
  5. import java.awt.Graphics;
  6. import java.awt.Graphics2D;
  7. import java.awt.Panel;
  8. import java.awt.event.ItemEvent;
  9. import java.awt.event.ItemListener;
  10. import java.awt.image.BufferedImage;
  11. import javax.swing.JApplet;
  12. public class CheckBoxSample01 extends JApplet implements ItemListener {
  13.   private static final long serialVersionUID = 1L;
  14.   Checkbox chk = new Checkbox("Check");
  15.   BufferedImage bi;
  16.   Graphics2D offs;
  17.   int w,h;
  18.   public void init() {
  19.     chk.addItemListener(this);
  20.     Panel panel = new Panel();
  21.     panel.setBackground(Color.WHITE);
  22.     panel.add(chk);
  23.     setLayout(new BorderLayout());
  24.     add(panel, BorderLayout.SOUTH);
  25.     w = getWidth();
  26.     h = getHeight();
  27.     bi = new BufferedImage(w,h,BufferedImage.TYPE_INT_ARGB);
  28.     offs = (Graphics2D)bi.getGraphics();
  29.     offs.setBackground(Color.WHITE);
  30.   }
  31.   public void paint(Graphics g) {
  32.     g.drawImage(bi, 0, 0, null);
  33.   }
  34.   public void update(Graphics g){
  35.     paint(g);
  36.   }
  37.   public void itemStateChanged(ItemEvent event) {
  38.     if ( event.getSource() == chk ) {
  39.       offs.clearRect(0, 0, w, h);
  40.       if(event.getStateChange() == ItemEvent.SELECTED ) {
  41.         offs.setColor(Color.RED);
  42.         offs.drawString("チェックしてるよ",10,10);
  43.       } else {
  44.         offs.setColor(Color.BLUE);
  45.         offs.drawString("チェックしてないよ",10,10);
  46.       }
  47.       repaint();
  48.     }
  49.   }
  50. }
[ サンプルプログラムの実行結果 ]
実行結果を見るには下のボタンをクリックしてください。
チェックボックスにチェックを入れると画面上に「チェックしているよ」と表示します。チェックをはずすと「チェックしているよ」と表示します。 ※実行結果は、別ウィンドウで開きます。実行には時間がかかることがありますのでご注意ください。


[ サンプルプログラムの解説 ]
アプレット上にボタンを追加する場合、まずアプレットにアイテムリスナーをインプリメント(15行目)します。 26行目でチェックボックスオブジェクトをアイテムリスナーに登録しています。 アイテムリスナーに追加しないと、チェックしても何もおきません。 27行目〜31行目で登録したチェックボックスオブジェクトのレイアウト設定と画面配置を行っています。
チェックボックスにチェックを入れた時、または、はずした時に行う処理は、itemStateChangedメソッドに記述します。サンプルでは、48行目から60行目になります。
49行目のif文で該当のチェックボックスかどうかを判定します。サンプルでは、チェックボックスがひとつだけなのでこのif文が無くても動作しますが、チェックボックスが複数ある場合や他のアイテムイベント を発生させるオブジェクトがある場合は、この判定が必要となります。 51行目のif文では、チェックボックスがチェックされているかどうかの判定を行っています。判定結果が真の時は、画面上に「チェックしてるよ」と表示して 偽の時は、「チェックしてないよ」と表示しています。
チェックボックスを利用するときの大体の構造は、下のような感じになります。
public class [アプレットの名前] extends JApplet implements ItemListener {

  Checkbox [チェックボックスオブジェクトのオブジェクト変数名]
    = new Checkbox("[チェックボックスに表示するラベル名]");


  public void init() {

    setLayout([使用するレイアウト])
    [ボタンオブジェクトのオブジェクト変数名].addItemListener(this);
    add([チェックボックスオブジェクトのオブジェクト変数名],[使用するレイアウト]);


  }

  public void itemStateChanged(ItemEvent e) {
    if (e.getSource() == [チェックボックスオブジェクトのオブジェクト変数名]) {
      if(e.getStateChange() == ItemEvent.SELECTED ) {
        [チェックされたときの処理を記述]
      } else {
        [チェックがはずされたときの処理を記述]
      }
      [チェックボックス状態変化時の共通処理を記述]
    }
  }


  public void paint(Graphics g) {

    [描画処理等]

  }

}



■アイコン付きチェックボックス

[ サンプルプログラムのソースコード - CheckboxSample02.java - ]
  1. package sample.applet.action;
  2. import java.awt.BorderLayout;
  3. import java.awt.Color;
  4. import java.awt.Graphics;
  5. import java.awt.Graphics2D;
  6. import java.awt.event.ItemEvent;
  7. import java.awt.event.ItemListener;
  8. import java.awt.image.BufferedImage;
  9. import java.net.URL;
  10. import javax.swing.ImageIcon;
  11. import javax.swing.JApplet;
  12. import javax.swing.JCheckBox;
  13. import javax.swing.JPanel;
  14. public class CheckboxSample02 extends JApplet implements ItemListener {
  15.   private static final long serialVersionUID = 1L;
  16.   JCheckBox checkbox;
  17.   BufferedImage bi;
  18.   Graphics2D offs;
  19.   int w,h;
  20.   public void init() {
  21.     setBackground(Color.WHITE);
  22.     setLayout(new BorderLayout());
  23.     
  24.     try {
  25.       URL url = new URL(getCodeBase() + "icon/test1.png");
  26.       ImageIcon icon = new ImageIcon(url);
  27.       checkbox = new JCheckBox("Icon付きチェックボックス",icon);
  28.       URL selectIconUrl = new URL(getCodeBase() + "icon/test1c.png");
  29.       ImageIcon selectIcon = new ImageIcon(selectIconUrl);
  30.       checkbox.setSelectedIcon(selectIcon);
  31.     } catch(Exception e) {
  32.       e.printStackTrace();
  33.     }
  34.     checkbox.addItemListener(this);
  35.     JPanel panel = new JPanel();
  36.     panel.setBackground(Color.WHITE);
  37.     panel.add(checkbox);
  38.     add(panel, BorderLayout.SOUTH);
  39.     w = getWidth();
  40.     h = getHeight()-90;
  41.     bi = new BufferedImage(w,h,BufferedImage.TYPE_INT_ARGB);
  42.     offs = (Graphics2D)bi.getGraphics();
  43.     offs.setBackground(Color.WHITE);
  44.   }
  45.   public void paint(Graphics g) {
  46.     g.drawImage(bi, 0, 0, null);
  47.   }
  48.   
  49.   public void update(Graphics g){
  50.     paint(g);
  51.   }
  52.   public void itemStateChanged(ItemEvent event) {
  53.     if ( event.getSource() == checkbox ) {
  54.       offs.clearRect(0, 0, w, h);
  55.       if(event.getStateChange() == ItemEvent.SELECTED ) {
  56.         offs.setColor(Color.RED);
  57.         offs.drawString("チェックしてるよ",10,10);
  58.       } else {
  59.         offs.setColor(Color.BLUE);
  60.         offs.drawString("チェックしてないよ",10,10);
  61.       }
  62.       repaint();
  63.     }
  64.   }
  65. }
[ サンプルプログラムの実行結果 ]
実行結果を見るには下のボタンをクリックしてください。
チェックボックスの動作は、「チェックボックスのサンプル ( CheckboxSample02.java )」と同じです。アイコンの付いたチェックボックスが表示されます。
※実行結果は、別ウィンドウで開きます。実行には時間がかかることがありますのでご注意ください。


[ サンプルプログラムの解説 ]
このサンプルでは、初期表示時のアイコンの設定(33行目〜35行目)の他にチェックボックスにチェックを 入れた時のアイコンも設定(36行目〜38行目)しています。
アイコンの設定には、他にもマウスカーソルがオブジェクト上に乗った場合に表示するアイコン設定などがあります。



最終更新日:2019/02/13

2015-03-01からの訪問者数
  1757 人