2

我有一个实例化另一个帧的帧,但我不想在实例化的帧上使用 close(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() 或 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 回答
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 回答
-1

我不确定我是否正确,但你可以打电话dispose()。javadoc 建议您可以使用show().

于 2013-07-11T23:05:23.487 回答