last modified: Jun./30th/2002; Jan./22nd/2002
まずは GUI から作ります。フレームにパネルを配置し、パネルにボタンとラベルを追加します。ボタンを押すと、イベントが発生し、ラベルを書き換えるようにしたいのです。ボタンクリックのイベントを拾うので ActionListener を実装するのですが、まずはイベントを実装しないで、見栄えだけ作ることにします。
EventDemo.java:
import java.awt.*;
import javax.swing.*;
class EventDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("Event Demo");
JPanel panel = new JPanel();
JButton button = new JButton("Click Me!");
JLabel label = new JLabel("clicks");
panel.setLayout(new BorderLayout());
panel.add(button, BorderLayout.NORTH);
panel.add(label, BorderLayout.CENTER);
Container cont = frame.getContentPane();
cont.add(panel);
//Frame のセットアップ
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
実行例:
C:\java>javac EventDemo.java C:\java>java EventDemo |
|
これにイベントを取得するロジックを実装し、ボタンを押すとラベルの文字列が変化するようにします。
EventDemo.java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class EventDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("Event Demo");
MyPanel panel = new MyPanel();
Container cont = frame.getContentPane();
cont.add(panel);
//Frame のセットアップ
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
class MyPanel extends JPanel implements ActionListener {
JButton button;
JLabel label;
int i = 0;
MyPanel() {
button = new JButton("Click Me!");
label = new JLabel("clicks");
this.setLayout(new BorderLayout());
this.add(button, BorderLayout.NORTH);
this.add(label, BorderLayout.CENTER);
// 自分自身にイベントを投げる
button.addActionListener(this);
}
// イベント・リスナー
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button) {
i++;
label.setText(i + " clicks");
}
}
}
実行例:
C:\java>javac EventDemo.java C:\java>java EventDemo |
|