2

別のフレームをインスタンス化するフレームがありますが、インスタンス化されたフレームで閉じる (x) ボタンを使用したくないので、ボタンを作成しました。このボタンを使用して、JVM を終了せずにインスタンス化されたフレームを閉じることができるようにコーディングする方法を教えてください。

4

6 に答える 6

5

独自の閉じるボタンを持つことは奇妙な UI であり、避けるべきです。

独自のボタンがクリックされたときにフレームを取り除くには、次のようにします。

jFrame.setVisible(false);

また

jFrame.dispose();

完全に消したい場合。

閉じるボタンがクリックされたときに JVM を終了したくないフレームでは、次のように指定します。

jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

また

jFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

必要な動作に応じて。

于 2009-01-10T08:55:57.837 に答える
0

setVisible(false)インスタンス化された JFrame をビューから非表示にするために使用できます

于 2013-10-22T00:52:46.283 に答える
0

これを使って:

jFrame.setUndecorated(true);
jFrame.getRootPane().setWindowDecorationStyle(JRootPane.NONE);
于 2009-11-16T15:46:03.883 に答える
0

setVisible() または dispose() 関数を試すことができます

あなたのメインクラスのために...

    public class Main {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    //new DemoTryCatch()
    new Frame1();
}

}

最初のフレーム クラスの場合...

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;


public class Frame1 extends JFrame{
JButton newFrame=new JButton("Frame 2");
public Frame1() {
    // TODO Auto-generated constructor stub
    super("Frame 1");
    add(newFrame);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(300,300);
    newFrame.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            // TODO Auto-generated method stub
            new Frame2();\\instantiating your new Frame
        }
    });
}
}

インスタンス化されたフレームの場合...

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;


public class Frame2 extends JFrame{

JButton CloseFrame2=new JButton("CloseFrame2");
public Frame2() {
    // TODO Auto-generated constructor stub
    super("Frame 1");
    add(CloseFrame2);
    setVisible(true);
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    setSize(300,300);
    CloseFrame2.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            setVisible(false);\\You could also use dispose()
        }
    });
}
}
于 2014-06-16T09:53:38.227 に答える
0

私はトムに同意します。あなたが書き留めたコードでは次のように思います:

[framename].setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

EXIT_ON_CLOSEアプリケーションを完全に終了することを意味します。

次のコマンドを使用して X ボタンをクリックすると、ウィンドウを閉じることができます。

[framename].setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

サンプルコードは次のとおりです。

package answers;

import javax.swing.JFrame;

public class Answers {

    public static void main(String[] args) {

        //frame 1
        JFrame frame1 = new JFrame("this is frame 1");
        frame1.setSize(500, 500);
        frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        frame1.setLocationRelativeTo(null); // ignore this its just to place frame 1 on the center

        //now this is the code for frame2
        //frame 2
        JFrame frame2 = new JFrame("this is frame 2");
        frame2.setSize(500, 500);
        frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        frame1.setVisible(true);
        frame2.setVisible(true);

    }

}
于 2014-01-31T14:16:06.767 に答える