Java jFrame中窗体的使用setVisible(false)后窗体不隐藏该怎么解决?(附测试源码)

publicclassaaextendsJFrame{privatestaticfinallongserialVersionUID=1L;privateJPaneljCo... public class aa extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JButton jButton = null;
/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new Rectangle(80, 110, 114, 32));
jButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
bb secondform=new bb();
aa firstform=new aa();
secondform.setVisible(true); //显示第二个窗体
firstform.setVisible(false); //同时隐藏第一个窗体,但执行后,该窗体没有隐藏。
}
});
}
return jButton;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
SwingUtilities.invokeLater(new Runnable() {
public void run() {
aa thisClass = new aa();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
/**
* This is the default constructor
*/
public aa() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
}
展开
 我来答
匿名用户
2013-08-16
展开全部
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JFrameHideShow extends JFrame {
private static final long serialVersionUID = 1L;
public JFrameHideShow(String title) {
super("JFrameHideShow - "+title);
setSize(400, 200);
JButton jButton = new JButton(title);
this.add(jButton);

jButton.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
JButton btn=(JButton)e.getSource();
if(title1.equals(btn.getText()) ){
secondform.setVisible(true); //显示第二个窗体
firstform.setVisible(false); //同时隐藏第一个窗体,但执行后,该窗体没有隐藏。
}else{
firstform.setVisible(true); //同时隐藏第一个窗体,但执行后,该窗体没有隐藏。
secondform.setVisible(false); //显示第二个窗体
}
}
});
}

private static final String title1="AA";
private static final String title2="BB";
private static JFrameHideShow firstform;
private static JFrameHideShow secondform;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
firstform = new JFrameHideShow(title1);
firstform.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
secondform = new JFrameHideShow(title2);
secondform.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

firstform.setVisible(true);
}
});
}
}

请参考一个例子——使用静态变量,不是太好,但只是作为简单的例子
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
maye100
2013-08-16 · TA获得超过2650个赞
知道小有建树答主
回答量:1341
采纳率:100%
帮助的人:964万
展开全部
首先,不该在窗体上显示或者隐藏,而是应该将按钮放在面板上,面板放到窗体里。
通过切换面板,来实现你的要求

窗体永远只有一个,而里面可以有多种面板(panel)
追问
非常感谢,不过昨天经研究后发现,问题出在了aa firstform=new aa();这句话,这个是告诉系统在新建一个firstform,然后将firstform进行隐藏,而不是对当前的窗口进行隐藏,最后直接用setVisible(false);之后,问题解决,非常感谢
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-16
展开全部
aa firstform=new aa();
每次都是新实例来的、可不可见,无关要紧。怎么可能隐藏第个呢。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式