ボタン JButton
Swing で基本的なボタンは JButton クラスで実装されます。
ここでは次のように二つボタンを持つウィンドウを作成してみましょう。
二つのボタンはいずれも JButton で作成されています。 二つ目のボタンは ImageIcon オブジェクトに画像ファイルを読み込み、それをボタンにセットすることで ボタンにアイコンが設定されています。
また、ボタンをフレームに追加した順番に並べるのは フローレイアウト (FlowLayout) をレイアウトマネージャにセットしているためです。
具体的には次のようなコードになります。
package com.keicode.java.testapp;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
@SuppressWarnings("serial")
public class JButtonTest1 extends JFrame {
public JButtonTest1() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
setSize(300, 150);
// ボタン 1
JButton button = new JButton("Button 1");
add(button);
// アイコン付きボタン
ImageIcon imageIcon = new ImageIcon(
getClass().getResource("/images/search.png")
);
JButton button2 = new JButton("Button 2");
button2.setIcon(imageIcon);
add(button2);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JButtonTest1 app = new JButtonTest1();
app.setVisible(true);
}
});
}
}
ここでアイコンにセットしている画像ファイル search.png は src/images フォルダ内に配置しています。
上でみたように、ボタンのラベルは JButton のコンストラクタに渡せば OK です。
また、アイコンを設定するためにここでは ImageIcon オブジェクトを作成しています。 画像ファイルは画像リソースとして、getResource メソッドで読み込んでいます。
JButton でクリックに応答する
次の例ではボタンをクリックしたときに、標準出力に文字を出力しています。
このようにボタンをクリックしたときの動作を指定するには、JButton の addActionListener メソッドで アクションリスナーをセットします。
アクションリスナーは ActionListener インターフェイスを実装したオブジェクトです。 actionPerformed メソッドを実装するだけです。ActionListener を実装したクラスを実装する時に、 内部クラスとして作成するとクラスフィールドにもアクセスできるので都合が良い場合が多いです。
package com.keicode.java.testapp;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
@SuppressWarnings("serial")
public class JButtonTest1 extends JFrame {
public JButtonTest1() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
setSize(300, 150);
// ボタン
JButton button = new JButton("Button 1");
button.addActionListener(new ClickAction());
add(button);
}
class ClickAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Button 1 was clicked.");
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JButtonTest1 app = new JButtonTest1();
app.setVisible(true);
}
});
}
}
以上で JButton を利用する基本的な方法について説明しました。