• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ボタンとダイアログの関連性)

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

このQ&Aのポイント
  • ボタンを押すとダイアログを表示させる方法について
  • ダイアログ内でのボタンの操作方法について
  • ダイアログの定義とフレーム内のボタンとの関係について

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

  • ベストアンサー
  • nknk80
  • ベストアンサー率65% (17/26)
回答No.1

> ダイアログの定義は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(); } } }

maru1021
質問者

お礼

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

関連するQ&A