Java jFrame中窗体的使用setVisible(false)后窗体不隐藏该怎么解决?(附测试源码)
发布网友
发布时间:2022-05-05 07:54
我来回答
共3个回答
热心网友
时间:2023-10-16 12:52
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);
}
});
}
}
请参考一个例子——使用静态变量,不是太好,但只是作为简单的例子
热心网友
时间:2023-10-16 12:52
首先,不该在窗体上显示或者隐藏,而是应该将按钮放在面板上,面板放到窗体里。
通过切换面板,来实现你的要求
窗体永远只有一个,而里面可以有多种面板(panel)追问非常感谢,不过昨天经研究后发现,问题出在了aa firstform=new aa();这句话,这个是告诉系统在新建一个firstform,然后将firstform进行隐藏,而不是对当前的窗口进行隐藏,最后直接用setVisible(false);之后,问题解决,非常感谢
热心网友
时间:2023-10-16 12:53
aa firstform=new aa();
每次都是新实例来的、可不可见,无关要紧。怎么可能隐藏第个呢。
热心网友
时间:2023-10-16 12:52
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);
}
});
}
}
请参考一个例子——使用静态变量,不是太好,但只是作为简单的例子
热心网友
时间:2023-10-16 12:52
首先,不该在窗体上显示或者隐藏,而是应该将按钮放在面板上,面板放到窗体里。
通过切换面板,来实现你的要求
窗体永远只有一个,而里面可以有多种面板(panel)追问非常感谢,不过昨天经研究后发现,问题出在了aa firstform=new aa();这句话,这个是告诉系统在新建一个firstform,然后将firstform进行隐藏,而不是对当前的窗口进行隐藏,最后直接用setVisible(false);之后,问题解决,非常感谢
热心网友
时间:2023-10-16 12:53
aa firstform=new aa();
每次都是新实例来的、可不可见,无关要紧。怎么可能隐藏第个呢。