| 3.JLabel/JCheckBox/JRadioButton |
これも使い方は簡単です。
| (1) JLabel |
import java.awt.*;
import javax.swing.*;
class LabelSample extends JFrame {
LabelSample() {
super("LabelSample");
Icon icon = new ImageIcon("tama1-b.gif");
/* ラベル */
JLabel label1 = new JLabel("普通のラベル");
JLabel label2 = new JLabel("アイコン付き");
label2.setIcon(icon);
JLabel label3
= new JLabel("<html><font size=7 color=#ffaa00>
<b>こんなことも<br>できちゃう</b></font>");
setSize(300,300);
Container c = getContentPane();
c.setLayout(new GridLayout(3,1));
c.add(label1);
c.add(label2);
c.add(label3);
setVisible(true);
}
public static void main(String args[]) {
new LabelSample();
}
}
|
C:\java_test>javac LabelSample.java C:\java_test>java LabelSample |

| (2) JCheckBox |
JCheckBox は AWT の CheckBox と似た部品です。API ドキュメントを見てもわかりますが、JCheckBox は前回紹介した JToggleButton のサブクラスです。考えてみれば、チェックボックスは ON 状態、OFF状態を持ちますから、見た目は違いますがトグルボタンと同じですね。
JToggleButton のサブクラスということは使い方もほとんど同じです。またボタンとしての基本機能は、これも前回紹介した AbstractButton クラスに定義されているので、こちらの機能を使えばよいことになります。もちろんアイコンも漬けられますよ。
JCheckBox は Button 系のコンポーネントになるので、イベント処理は ActionEvent を使っておこないます。
CheckBoxSample.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class CheckBoxSample extends JFrame implements ActionListener {
JCheckBox cb1;
JCheckBox cb2;
JCheckBox cb3;
Icon icon1;
Icon icon2;
CheckBoxSample() {
super("CheckBoxSample");
/* ON状態用アイコン */
icon1 = new ImageIcon("tama1-b.gif");
/* OFF状態用アイコン */
icon2 = new ImageIcon("tama2-p.gif");
/* チェックボックス */
cb1 = new JCheckBox("日本");
cb1.addActionListener(this);
cb2 = new JCheckBox("テレビ");
cb2.addActionListener(this);
cb3 = new JCheckBox("画像");
cb3.addActionListener(this);
cb3.setIcon(icon2);
setSize(300,100);
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(cb1);
c.add(cb2);
c.add(cb3);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
AbstractButton src = (AbstractButton)e.getSource();
/* チェックボックスのラベルの取得 */
String label = src.getText();
/* チェック状態の取得 */
boolean isSelected = src.isSelected();
System.out.print("["+label+"] が");
if ( isSelected ) {
System.out.println("ONになりました");
if ( src==cb3 ) {
cb3.setIcon(icon1);
}
} else {
System.out.println("OFFになりました");
if ( src==cb3 ) {
cb3.setIcon(icon2);
}
}
}
public static void main(String args[]) {
new CheckBoxSample();
}
}
|
C:\java_test>javac CheckBoxSample.java C:\java_test>java CheckBoxSample |
画像チェックボックスOFF状態
画像チェックボックスON状態
| (3) JRadioButton |
JRadioButton は同一グループ内で1つだけが ON 状態になるボタンです。AWT では RadioButton というクラスはありませんでしたが、Swing では新しく追加されました。使い方は JCheckBox と同じですが、ボタンをグループ化する処理を追加しないとラジオボタンの意味がありません。
ボタンをグループ化するには javax.swing.ButtonGroup クラスを使います。実はこのクラスは JRadioButton のグループ化だけではなく、AbstractButton クラスのサブクラスであればどんなボタンであってもグループ化ができます。ですから、普通のボタンをラジオボタンのように使うことも可能です。
ButtonGroup group = new ButtonGroup();
group.add( rb1 );
group.add( rb2 );
group.add( rb3 );
ボタンをグループ化するには、この例のように ButtonGroup オブジェクトをつくって、これに add します。これで1つのグループができあがります。グループから削除する場合は remove というメソッドを使います。詳しくは API ドキュメントを参照してください。
RadioButtonSample.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class RadioButtonSample extends JFrame implements ActionListener {
JRadioButton rb1;
JRadioButton rb2;
JRadioButton rb3;
Icon icon1;
Icon icon2;
RadioButtonSample() {
super("RadioButtonSample");
/* ON状態用アイコン */
icon1 = new ImageIcon("tama1-b.gif");
/* OFF状態用アイコン */
icon2 = new ImageIcon("tama2-p.gif");
/* ラジオボタン */
rb1 = new JRadioButton("日本");
rb1.addActionListener(this);
rb2 = new JRadioButton("テレビ");
rb2.addActionListener(this);
rb3 = new JRadioButton("画像");
rb3.addActionListener(this);
rb3.setIcon(icon2);
/* ボタングループに登録 */
ButtonGroup group = new ButtonGroup();
group.add(rb1);
group.add(rb2);
group.add(rb3);
setSize(300,100);
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(rb1);
c.add(rb2);
c.add(rb3);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
AbstractButton src = (AbstractButton)e.getSource();
/* チェックボックスのラベルの取得 */
String label = src.getText();
System.out.print("["+label+"] が");
System.out.println("ONになりました");
/* 画像ボタンの状態の取得 */
boolean isSelectedRb3 = rb3.isSelected();
if ( isSelectedRb3 ) {
rb3.setIcon(icon1);
} else {
rb3.setIcon(icon2);
}
}
public static void main(String args[]) {
new RadioButtonSample();
}
}
|
C:\java_test>javac RadioButtonSample.java C:\java_test>java RadioButtonSample |
画像ラジオボタンOFF状態
画像ラジオボタンON状態