//「OK」ボタンを押すと、JComboBoxで選択された文字列を // 標準出力に出力するプログラム import java.awt.event.*; /* このプログラムでは、ユーザイベントを感知して処理を行うという宣言 */ import java.io.*; import java.lang.*; import javax.swing.*; /* 「implements ActionListener」: このプログラムでは、ActionListener という リスナを使うという宣言。 ActionListener: 「ボタンの上でマウスがクリックされた」というイベントを 受け取るためのリスナ。 */ public class SelectCakeBox implements ActionListener { // GUI の部品の変数の宣言フィールド JFrame frame; JLabel msg; JComboBox combo; JButton okBut, cancelBut; /* コンストラクタ(GUI のウィンドウ作成部分) コンストラクタ: オブジェクトが作成されたとき(「new クラス名()」と されたときに、同時に実行される特殊なメソッド) GUI のウィンドウの作成部分の処理については、必ずコンストラクタの 中に書くこと */ public SelectCakeBox() { frame = new JFrame(); frame.getContentPane().setLayout(null); msg = new JLabel(); msg.setText("名前を入力してください。"); msg.setBounds(5, 5, 200, 30); frame.getContentPane().add(msg); combo = new JComboBox(); // JComboBox にケーキの名前を登録 combo.addItem("チョコレートケーキ"); combo.addItem("ショートケーキ"); combo.addItem("チーズケーキ"); combo.addItem("アップルタルト"); combo.addItem("モンブラン"); combo.addItem("シュークリーム"); combo.setBounds(50, 35, 150, 30); frame.getContentPane().add(combo); okBut = new JButton(); okBut.setText("OK"); /*「OK」ボタンに ActionListener を登録 ボタンが押されたことを ActionListener が、感知すると、 「actionPerformed」メソッドで定義されている処理が実行される。 */ okBut.addActionListener(this); okBut.setBounds(80, 70, 70, 30); frame.getContentPane().add(okBut); cancelBut = new JButton(); cancelBut.setText("Cancel"); cancelBut.setBounds(155, 70, 100, 30); frame.getContentPane().add(cancelBut); frame.setTitle("ケーキ選択"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(270, 140); frame.setVisible(true); } /* actionPerformed: ボタンが押されたときの処理を定義したメソッド 「ActionEvent」というクラス(データ型)の変数「e」は、 「どのボタンが押されたか」などの情報を持っている。 */ public void actionPerformed(ActionEvent e) { /*「ActionEvent」 クラスのメソッド「getSource()」は、どの GUI 部品で ユーザイベントが起こったか(どのボタンが押されたか)ということを 返してくれる。 従って、「getSource()」が返してくれた値と、「OK」ボタンの変数 「okBut」が一致していたら、「OK」ボタンが押されたということ。 */ if (okBut == e.getSource()) { /* 「OK」ボタンが押されたときの処理 */ /* JComboBox の「getSelectedItem()」メソッドは、現在選択されている項目を 返してくれる。ただし、返してくれる値のデータ型が、「Object」という 型なので、「String」にキャストすることが必要。 */ String cake = (String) combo.getSelectedItem(); System.out.println("選択されているケーキは: " + cake); } } public static void main(String[] args) { new SelectCakeBox(); /* ケーキの選択用ウィンドウを作成 */ } }