
レイアウトマネジャー
1 package com.tkadvance;
2
3 import java.awt.BorderLayout;
4 import java.awt.event.ActionEvent;
5 import java.awt.event.ActionListener;
6 import javax.swing.JButton;
7 import javax.swing.JFrame;
8 import javax.swing.JLabel;
9
10 public class SampleJFrame extends JFrame implements ActionListener{
11 private static final long serialVersionUID = 1L;
12 JLabel l1;
13
14 public SampleJFrame() {
15 super();
16 setDefaultCloseOperation(EXIT_ON_CLOSE);
17 this.setTitle("サンプルJFrame");
18 l1 = new JLabel("Hello World!!");
19 this.add(l1, BorderLayout.CENTER);
20
21 JButton btn1 = new JButton("テキストが変更されます");
22 btn1.addActionListener(this);
23 this.add(btn1, BorderLayout.SOUTH);
24
25 this.setSize(300,200);
26 this.setVisible(true);
27 }
28
29 public static void main(String[] args) {
30 new SampleJFrame();
31 }
32
33 public void actionPerformed(ActionEvent e) {
34 l1.setText("ボタンが押されました。");
35 }
36 }
前回のコンポーネントのプログラムを変更して作成しています。
12. JLabelの変数「l1」が前回と違う場所に宣言されていますね。これは前回は
public SampleJFrame()
のコンストラクタ内のスコープのみで編巣が使われていたので
コンストラクタ内でインスタンスを作成しても問題ないのですね。今回は
public void actionPerformed(ActionEvent e)
のメソッド内でも「l1」の変数にアクセスしなければいけないのでクラス内で
使用できるように宣言しています。
22. ここで(btn1)ボタンアクションリスナーをaddしています。
33. こでボタン(btn1)が押された場合の処理を記述します。
ボタンが複数ある場合はif構文を使うなりして処理を分岐することもできます。
|