web-dev-qa-db-ja.com

JButtonをクリックした後にjFrameを閉じる

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が画面に表示され、その逆も同様です。

5
Ankush Pruthi

ボタンにactionListenerがあるとすると、次のように配置された「ルールボタン」をクリックした後、

      JFrame1.dispose();  //Remove JFrame 1
      JFrame2.setVisible(true) //Show other frame

そして反対の反応のためにそれらを崇拝します

9
Levenal

このような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();
}
3
Aleksey Dz

私は決して専門家ではありませんが、この問題にも遭遇しました。 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
0
Delta3

これが機能しない場合は、これを試してください

JFrame1.dispose();  //Remove JFrame 1
      JFrame2.setVisible(true) //Show other frame
JFrame2.setVisible(true);
this.dispose();
0
Guermou Di Omar
  1. Main()メソッドを持つMainClassを用意します。
  2. Main()メソッドを持つMainClassに、JFrame1およびJFrame2参照変数をカプセル化させます。特定の理由がない限り、JFrame1またはJFrame2にmain()を含めないでください。
  3. JFrameオブジェクトの1つで何かがクリックされた後、他のJFrameオブジェクトをインスタンス化/表示し、MainProgram.JFrameオブジェクトのメソッドを介してそれ自体を破棄します。

例:

    //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
    }
0
user3053416

これは私のために働きました(Frame1RegScreenと呼ばれ、Frame2MainScreenと呼ばれました):

RegScreen.this.setVisible(false);

new MainScreen().setVisible(true);

これがお役に立てば幸いです:) Regscreenは、起動時に開いた元のフレームでした。

0
Gunshield_XD