こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ボタンとダイアログの関連性

import java.awt.*;
import java.awt.event.*;

public class ActionListenerTest extends Frame implements ActionListener {
ActionListenerTest() {
super("ActionListenerTest");
Button b1 = new Button("BUTTON");
b1.addActionListener(this);
add(b1);
setSize(200, 100);
setVisible(true);
}
public void actionPerformed(ActionEvent evt) {
String ac = evt.getActionCommand();
if( ac == "BUTTON") {
/*ここでの操作でダイアログを表示させたい*/
}
}
public static void main(String [] args)
{
new ActionListenerTest();
}
}


表示されたフレーム内のボタンを押したときに、ダイアログを表示させたいです。コメントアウトした部分でダイアログを表示させたいのですが、ダイアログの定義はActionListenerTest() 内にて行うのでしょうか?

またダイアログ内でボタンを作り、そのボタンの操作を行うときは、フレームでのボタンと同様にString ac = evt.getActionCommand(); ---でいいのでしょうか?

どなたかご教授願います。
汚いプログラムすいません。

投稿日時 - 2008-07-02 01:42:13

QNo.4144764

すぐに回答ほしいです

質問者が選んだベストアンサー

> ダイアログの定義はActionListenerTest() 内にて行うのでしょうか?

プログラムが読みにくくなるため、一般的にはここではダイアログの定義はしません。
ActionListenerTestクラス定義の外側で、ダイアログの定義するのが一般的だと思います。

> またダイアログ内でボタンを作り、そのボタンの操作を行うときは、
> フレームでのボタンと同様にString ac = evt.getActionCommand();
> ---でいいのでしょうか?

そのような書き方でも大丈夫ですが、下記のTestDialogクラスとして
定義したような書き方もできます。
この方法では、イベントのソース(イベント発生源)が定義した
ボタンと同じであることを見ています。


/* --- 以下プログラム --- */
import java.awt.*;
import java.awt.event.*;

public class ActionListenerTest extends Frame implements ActionListener
{
ActionListenerTest()
{
super("ActionListenerTest");
Button b1=new Button("BUTTON");
b1.addActionListener(this);
add(b1);
setSize(200,100);
setVisible(true);
}

public void actionPerformed(ActionEvent evt)
{
String ac=evt.getActionCommand();
if(ac=="BUTTON")
{
/* ここでの操作でダイアログを表示させたい */
TestDialog dialog=new TestDialog(this);
dialog.setVisible(true);
}
}

public static void main(String[] args)
{
new ActionListenerTest();
}
}

/* --- 以下、テスト用ダイアログ --- */
class TestDialog extends Dialog implements ActionListener
{
private Button b2;

TestDialog(Frame frame)
{
super(frame,true);

b2=new Button("button");
b2.addActionListener(this);
add(b2);
setLocation(50,50);
setSize(200,200);
setTitle("Test Dialog");
}

public void actionPerformed(ActionEvent evt)
{
if(evt.getSource()==b2)
{
/* b2ボタンを押したときの処理 */
setVisible(false);
dispose();
}
}
}

投稿日時 - 2008-07-02 02:46:18

お礼

正しく実行できました。
ありがとうございました

投稿日時 - 2008-07-08 21:56:59

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問