A窗体生成B窗体,如何编程才能时B退出时,A依然存在? 父窗体A(JFrame)中通过 new BJFrame 生成了一个子窗体B,B中有一个Exit按钮,我写的函数是 System.exit(0),但是一旦按了B的这个Exit, A窗体也消失了。 如果要向B退出时,A仍然保留,应该如何编程?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public class Frame extends JFrame{ Frame() { super("A"); JButton b1=new JButton("弹出"); b1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { final JFrame b=new JFrame("B"); JButton b2=new JButton("Exit"); b2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { b.dispose(); } }); b.add(b2); b.setSize(300,300); b.setVisible(true); } }); setSize(300,300); add(b1); setVisible(true); } public static void main(String[] args) { Frame a=new Frame(); }}参考一下我的代码吧,不能用System.exit(0),会推出整个程序,将B窗口的对象调用dispose(),即可只关闭一个窗体 System.exit(0)是直接退出系统了你应该调用窗口关闭的函数或者隐藏窗口 不要用System.exit(0)可以用 dispose()或setVisible(false),前者b窗体销毁,后者只是隐藏b窗体 把System.exit(0);换成B.setVisible(false);这样就会保留A窗口。 System.exit(0);是退出系统。用dispose()。 如果是create出来的,最好用 dispose()如果是A类的子类,最好用 setVisible(false); 隐藏起来 JFrame可以给窗口指定一种关闭方式,例如DO_NOTHING_ON_CLOSE,HIDE_ON_CLOSE,DISPOSE_ON_CLOSE,EXIT_ON_CLOSE这四种方式,只也是JFrame和Frame最大的不同之处import java.awt.*;import java.awt.event.*;import javax.swing.*;public class AFrame extends JFrame{ private JButton btnB = new JButton("打开窗口B"); public AFrame() { this.setTitle("A窗口"); this.setPreferredSize(new Dimension(400, 300)); this.setLayout(new FlowLayout()); this.add(btnB); btnB.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { JFrame bFrame = new BFrame(); bFrame.pack(); bFrame.setLocationByPlatform(true); bFrame.setVisible(true); bFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } }); } public static void main(String[] args) { JFrame aFrame = new AFrame(); aFrame.pack(); aFrame.setLocationByPlatform(true); aFrame.setVisible(true); aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}class BFrame extends JFrame{ public BFrame() { this.setTitle("B窗口"); this.setPreferredSize(new Dimension(400, 300)); }} 关闭指定端口号的的服务 IE 非模式对话框返回值的问题 程序结果问题 散分交友了... 如何format一个16进制的串 为什么我用的jbuilder,不能输入中文? Float科学计数法的问题 谁有有关象棋类游戏的算法资料吗? 关于try{}catch和for? 谢谢大家,程序已编译通过,但是解释出现死循环,再线等待,代会结帐!急盼回答! 从小题目看大问题(求各种探讨) JFrame中加入两个JPanel怎样分别画出里面的内容?
Frame()
{
super("A");
JButton b1=new JButton("弹出");
b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
final JFrame b=new JFrame("B");
JButton b2=new JButton("Exit");
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
b.dispose();
}
});
b.add(b2);
b.setSize(300,300);
b.setVisible(true);
}
});
setSize(300,300);
add(b1);
setVisible(true);
}
public static void main(String[] args)
{
Frame a=new Frame();
}
}参考一下我的代码吧,不能用System.exit(0),会推出整个程序,将B窗口的对象调用dispose(),即可只关闭一个窗体
你应该调用窗口关闭的函数或者隐藏窗口
可以用 dispose()或setVisible(false),前者b窗体销毁,后者只是隐藏b窗体
这样就会保留A窗口。
用dispose()。
import java.awt.event.*;
import javax.swing.*;public class AFrame extends JFrame
{
private JButton btnB = new JButton("打开窗口B");
public AFrame()
{
this.setTitle("A窗口");
this.setPreferredSize(new Dimension(400, 300));
this.setLayout(new FlowLayout());
this.add(btnB);
btnB.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
JFrame bFrame = new BFrame();
bFrame.pack();
bFrame.setLocationByPlatform(true);
bFrame.setVisible(true);
bFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
});
}
public static void main(String[] args)
{
JFrame aFrame = new AFrame();
aFrame.pack();
aFrame.setLocationByPlatform(true);
aFrame.setVisible(true);
aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}class BFrame extends JFrame
{
public BFrame()
{
this.setTitle("B窗口");
this.setPreferredSize(new Dimension(400, 300));
}
}