whichのブログ ~プログラミング体験記~ -4ページ目

whichのブログ ~プログラミング体験記~

主にJava,vVsual C#,Andoroid,SQLについて
覚え基本た文法やプログラミング技法、各クラスの利用法を
忘れないように形にしたものです

初心者だとかプロだとか特に意識せず利用してもらえるとうれしいです。

今回扱うチェック系GUI部品は設定事項が少なくメソッドがほとんど変わらないので2つ同時に掲載します

■JCheckBoxクラス

コンストラクター

コンストラクタ引数
JCheckBox()なし
JCheckBox(Icon icon)画像オブジェクト
JCheckBox(Icon icon , boolean state)画像オブジェクト,初期チェック状態
JCheckBox(String text)表示テキスト
JCheckBox(String text , boolean state)表示テキスト,初期チェック状態
JCheckBox(String text , Icon icon)表示テキスト,画像オブジェクト
JCheckBox(String text , Icon icon , boolean state)表示テキスト,画像オブジェクト,初期チェック状態
説明が複雑になりそうなので今回はまとめて行きます。
表示文字列    :チェックボックスの横に表示する文字列を設定
初期チェック状態:true=チェック済み false=チェックしていない
画像オブジェクト :チェックのデザイン
がそれぞれ引数をつかって設定されたチェックボックスを生成する

メソッド

メソッド返却値引数説明
setSelected(boolean check)voidチェック状態チェックボックスのチェック状態を変更
setRolloverIcon(Icon rolloverIcon)void画像オブジェクトマウスが部品上に乗っているときの画像を設定
setSelectedIcon(Icon selectedIcon)void画像オブジェクト選択されたときの画像を設定
setPressedIcon(Icon pressedIcon)void画像オブジェクト部品が押されたときの画像を設定
setDisabledIcon(Icon disabledIcon)void画像オブジェクト部品が無効になったときの画像を設定
isSelected()booleanなしチェック状態を取得
この部品はチェックデザインを変更できるためメソッドがおおめに見えるが実際チェック機能の設定・取得だけでいいので条件式に利用できる
ちなみにイベントはItemListenerです

■JRadioButton

コンストラクター

コンストラクタ引数
JRadioButton()なし
JRadioButton(Icon icon)画像オブジェクト
JRadioButton(Icon icon , boolean state)画像オブジェクト,初期チェック状態
JRadioButton(String text)表示テキスト
JRadioButton(String text , boolean state)表示テキスト,初期チェック状態
JRadioButton(String text , Icon icon)表示テキスト,画像オブジェクト
JRadioButton(String text , Icon icon , boolean state)表示テキスト,画像オブジェクト,初期チェック状態
チェックボックスとコンストラクタの振る舞いはおなじです

メソッド

メソッド返却値引数説明
setSelected(boolean check)voidチェック状態ラジオボタンのチェック状態を変更
setRolloverIcon(Icon rolloverIcon)void画像オブジェクトマウスが部品上に乗っているときの画像を設定
setSelectedIcon(Icon selectedIcon)void画像オブジェクト選択されたときの画像を設定
setPressedIcon(Icon pressedIcon)void画像オブジェクト部品が押されたときの画像を設定
setDisabledIcon(Icon disabledIcon)void画像オブジェクト部品が無効になったときの画像を設定
isSelected()booleanなしチェック状態を取得
ラジオボタンとチェックボックスのメソッドとコンストラクタが同じ機能だということですがこの2つの部品は、
チェックボックス :選択項目の中からいくつかチェックをいれる
ラジオボタン   :選択項目の中から1つチェックを入れる

この程度しか違いがありませんので同じ機能が使えるわけです

■ButtonGroup
前述のようにラジオボタンは単体では役目を果たせません。
そこで複数のラジオボタンを「ButtonGroupクラス」でグループ化します
登録系の操作はレイアウト部品とほぼ変わりませんがアクションコマンドを登録してActionEventが発生させれるようにする
イベント系の操作はButtonModelクラスを使って選択されているラジオボタンのイベント処理を実行する

■サンプルプログラム
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GuiChecker extends JFrame {
private JLabel text;
private JCheckBox bigText;
private JCheckBox redText;
private ButtonGroup radio;
private final Font bf = new Font("serif",Font.BOLD,18);
private final Color  [] color = {Color.RED,Color.BLUE,Color.WHITE,Color.YELLOW};
public static void main(String [] gui) { new GuiChecker(); }
public GuiChecker(){
setTitle("JavaでGUIその6");
setSize(700,150);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new BorderLayout());
text = new JLabel("チェックボックスでこのテキストが変化します");
bigText = new JCheckBox("太字");
redText = new JCheckBox("赤字");
radio = new ButtonGroup();
JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
JPanel panel = new JPanel();
JPanel body  = new JPanel();
JRadioButton jrb = new JRadioButton("赤");
jrb.setActionCommand("0");
radio.add(jrb);
panel.add(jrb);
jrb = new JRadioButton("青");
jrb.setActionCommand("1");
radio.add(jrb);
panel.add(jrb);
jrb = new JRadioButton("白");
jrb.setActionCommand("2");
radio.add(jrb);
panel.add(jrb);
jrb = new JRadioButton("黄");
jrb.setActionCommand("3");
radio.add(jrb);
panel.add(jrb);
JButton btn = new JButton("START");
btn.addActionListener(new ActionListener() { 
public void actionPerformed(ActionEvent e){
ButtonModel model = radio.getSelection();
if(model==null) return;
int index = Integer.parseInt(model.getActionCommand());
text.setBackground(color[index]);
if(index==0) text.setForeground(Color.WHITE);
}
});
panel.add(btn);
bigText.addItemListener(new ItemListener() { 
public void itemStateChanged(ItemEvent e){
if(!bigText.isSelected()) return;
text.setForeground(null);
text.setFont(bf);
redText.setSelected(false);
}
});
redText.addItemListener(new ItemListener() { 
public void itemStateChanged(ItemEvent e){
text.setFont(null);
text.setForeground(Color.RED);
if(!redText.isSelected()) bigText.setSelected(false);
}
});
text.setOpaque(true);
body.add(bigText);
body.add(redText);
body.add(text);
split.add(panel,JSplitPane.LEFT);
split.add(body,JSplitPane.RIGHT);
add(split,BorderLayout.CENTER);
setVisible(true);
}
}

実行結果


ラジオボタンで背景色、チェックボックスでフォントや文字色が変わるプログラムにしてみました

次回あたりでダイアログかメニュのどちらかをやろうと思います