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 |
|