// 「OK」ボタンを押すと、「名前」の入力欄に入力した文字列を // 標準出力に出力するプログラム import java.awt.event.*; /* このプログラムでは、ユーザイベントを感知して処理を行うという宣言 */ import java.io.*; import java.lang.*; import javax.swing.*; /* 「implements ActionListener」: このプログラムでは、ActionListener という リスナを使うという宣言。 ActionListener: 「ボタンの上でマウスがクリックされた」というイベントを 受け取るためのリスナ。 */ public class InputBox extends JFrame implements ActionListener { // GUI の部品の変数の宣言フィールド JLabel msg, nameLabel; JTextField nameText; JButton okBut, cancelBut; /* コンストラクタ(GUI のウィンドウ作成部分) コンストラクタ: オブジェクトが作成されたとき(「new クラス名()」と されたときに、同時に実行される特殊なメソッド) GUI のウィンドウの作成部分の処理については、必ずコンストラクタの 中に書くこと */ public InputBox() { getContentPane().setLayout(null); msg = new JLabel(); msg.setText("名前を入力してください。"); msg.setBounds(5, 5, 200, 30); getContentPane().add(msg); nameLabel = new JLabel(); nameLabel.setText("名前: "); nameLabel.setBounds(5, 35, 40, 25); getContentPane().add(nameLabel); nameText = new JTextField(); nameText.setBounds(45, 35, 290, 25); getContentPane().add(nameText); okBut = new JButton(); okBut.setText("OK"); okBut.setBounds(150, 65, 70, 25); /*「OK」ボタンに ActionListener を登録 ボタンが押されたことを ActionListener が、感知すると、 「actionPerformed」メソッドで定義されている処理が実行される。 */ okBut.addActionListener(this); getContentPane().add(okBut); cancelBut = new JButton(); cancelBut.setText("Cancel"); cancelBut.setBounds(225, 65, 100, 25); getContentPane().add(cancelBut); setTitle("入力フィールド"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(350, 130); 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 name = nameText.getText(); System.out.println("入力された名前は: " + name); // 「System.out.println("入力された名前は: " + nameText.getText());」でもよい } } public static void main(String[] args) { new InputBox(); /* 名前の入力用ウィンドウを作成 */ } }