私が現在書いているプログラムには、2 つの JFrames があります (それぞれが異なるクラスにあり、それぞれに異なる目的がありますが、ウィジェット フレームはある種のスレーブと見なすことができます)。1 つはメイン ウィンドウです。もう 1 つは、メイン ウィンドウのボタンを押すとポップアップする「ウィジェット」です。一度に開くウィジェットのコピーは 1 つだけです。私は現在、actionPerformed アクションリスナーの下でブール変数を使用してこれを行っています。以下は、メイン ウィンドウのアクション リスナーです。
public void actionPerformed(ActionEvent e) {
if(getOpenWidget() == false){
System.out.println(getOpenWidget()); //test line
widget.initialize(); // please note that the instance "widget" is declared just after "public class MainWindow{" :)
widget.frame.setVisible(true);
setOpenWidget(true);
System.out.println(getOpenWidget() ); // test line
}else{
System.out.println(getOpenWidget());
JOptionPane.showMessageDialog(frame, "There is already an instance of the Booking Widget open.");
}
}
これで予約ウィジェットが開きました。予約ウィジェットにはキャンセル ボタンがあります。以下は、ウィジェットの「キャンセル」ボタンのアクション リスナーです。
btnCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
MainWindow ui = new MainWindow();
frame.dispose();
ui.setOpenWidget(false);
}
}
ここで、メイン ウィンドウのボタンをもう一度押すと、理論的には、openWidget bool は false で、別のウィンドウを開くことができるはずですが、キャンセル ボタン アクション リスナーでは、変数は変更されません。それで、私は openWidget を静的変数にせずに正しい方法で問題に取り組んでいますか? (ゲッターとセッターを正しく使用する必要がありますか?)そのボタンをクリックするたびにウィンドウ?
また、私のゲッターとセッターは、次のように標準装備されています。
void setOpenWidget(boolean val){
this.openWidget = val;
}
boolean getOpenWidget(){
return this.openWidget;
}