我有一个实例化另一个帧的帧,但我不想在实例化的帧上使用 close(x) 按钮。所以我创建了一个按钮。我如何编写此按钮可用于在不退出 JVM 的情况下关闭实例化框架的代码。
gbenga
问问题
24690 次
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 回答