我有一个框架实例化另一个框架,但我不想在实例化框架上使用close(x)按钮。所以我创建了一个按钮。我怎么编码这个按钮可以用来关闭实例化的框架而不退出JVM。
答案 0 :(得分:5)
拥有自己的关闭按钮是奇怪的用户界面,应该避免使用。
要在单击自己的按钮时删除框架,您可以执行以下操作:
jFrame.setVisible(false);
或
jFrame.dispose();
如果你想完全摆脱它。
在您不希望在单击的关闭按钮上退出JVM的帧上指定:
jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
或
jFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
取决于您想要的行为。
答案 1 :(得分:0)
使用此:
jFrame.setUndecorated(true);
jFrame.getRootPane().setWindowDecorationStyle(JRootPane.NONE);
答案 2 :(得分:0)
您可以使用setVisible(false)
来隐藏来自视图的实例化JFrame
答案 3 :(得分:0)
我同意Tom的观点,我认为在您写下的代码中:
[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);
}
}
答案 4 :(得分: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()
}
});
}
}
答案 5 :(得分:-1)
我不确定我是否正确,但您可以致电dispose()
。 javadoc建议您使用show()
重新打开它。