NetBeansで2つのJFrameを設計しました。
「ルール」ボタンをクリックすると(つまり、JFrame1に配置されます)、2番目のJFrameが開きます(ただし、JFrame2はJFrame1のウィンドウの上に開きます。 2番目のJFrameには「閉じる」ボタンがあります。しかし、このボタンをクリックすると、JFrame1が開いて機能しますが、JFrame2は実際には閉じておらず、JFrame2の上にJFrame1が表示されています。
つまり、メインフォームはJFrame1です。 JFrame1から「ルール」ボタンをクリックすると、JFrame1の上にJFrame2が開きます。JFrame2をクリックすると、「閉じる」ボタンがあり、メインフォーム(JFrame1)が起動されますが、JFrame2から起動されます。
ScenerioはJFframe1-> JFrame2-> JFrame1です。
私の質問は、「ルール」ボタンをクリックした後、JFrame1が閉じ、JFrame2が画面に表示され、その逆も同様です。
ボタンにactionListenerがあるとすると、次のように配置された「ルールボタン」をクリックした後、
JFrame1.dispose(); //Remove JFrame 1
JFrame2.setVisible(true) //Show other frame
そして反対の反応のためにそれらを崇拝します
このようなsomethigは、JFrame2を作成するコンストラクターまたはメソッドにあるはずです。
btnCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//call another method in the same class which will close this Jframe
CloseFrame();
}
});
JFrame2を閉じるメソッドです。
public void CloseFrame(){
super.dispose();
}
私は決して専門家ではありませんが、この問題にも遭遇しました。 2番目のJFrameを非表示に設定した場合、「キャンセル」を押すと、2番目のJFrameが閉じます。
//this is the code for the "cancel" button action listener
public void actionPerformed(ActionEvent e) {
setVisible(false);//hides the second JFrame and returns to the primary
これが機能しない場合は、これを試してください
JFrame1.dispose(); //Remove JFrame 1
JFrame2.setVisible(true) //Show other frame
JFrame2.setVisible(true);
this.dispose();
例:
//btn event inside 1st JFrame/window
private void jButton1ActionPerformed(Java.awt.event.ActionEvent evt) {
MainProgram.openResultsForm(); //MainProgram opens 2nd window
MainProgram.queryEntryForm.dispose(); //MainProgam closes this,
//the 1st window
}
これは私のために働きました(Frame1
RegScreen
と呼ばれ、Frame2
MainScreen
と呼ばれました):
RegScreen.this.setVisible(false);
new MainScreen().setVisible(true);
これがお役に立てば幸いです:) Regscreen
は、起動時に開いた元のフレームでした。