如何同时只显示一个JFrame窗口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何同时只显示一个JFrame窗口相关的知识,希望对你有一定的参考价值。

jframe1窗口中有一个按钮,当按下时会弹出另一个jframe2窗口,但是当多次点击时只显示一个jframe2窗口,请问如何实现?

楼上回答的不对。你想判断是否已经有了jframe2窗口,如果有就显示,否则新建。思路大体是正确的,可你的实现方式,竟然是在将jframe2当做一个字段,你判断的只是那个字段是不是为空,
根本无法确保是否存在jframe2的实例,试问如果别的程序创建了jframe2的实例呢?
你应该这样做:为JFrame2创建一个单独的类,使用单例模式(不懂的去查设计模式的书),在按钮事件中只处理一个实例(如:JFrame2.getInstance().setVisible(true) )。
public class JFrame2 extends JFrame
private JFrame2()

private static JFrame2 f2=new JFrame2();
public static JFrame2 getInstance()
return f2;

//.............
参考技术A 在点击时先判定是否已经有了jframe2窗口,如果有就显示,否则新建。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class JFrameShowTest extends JFrame implements ActionListener

public JFrameShowTest()
super("JFrame 1");
JButton showButton = new JButton("显示JFrame 2");
showButton.addActionListener(this);
this.add(showButton);
this.pack();
this.setDefaultCloseOperation(EXIT_ON_CLOSE);


@Override
public void actionPerformed(ActionEvent e)
if (jframe2 != null)
jframe2.setVisible(true);
else
jframe2 = new JFrame("我是JFrame 2");
jframe2.setSize(300, 300);
jframe2.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
jframe2.setVisible(true);



public static void main(String[] args)
new JFrameShowTest().setVisible(true);


private JFrame jframe2;

以上是关于如何同时只显示一个JFrame窗口的主要内容,如果未能解决你的问题,请参考以下文章

JFrame关闭方法的问题

无法同时显示我的JFrame和表格

Java中两个JFrame窗口的切换问题

在JFrame中显示数组

如何更改默认的 JFrame 窗口颜色?

java中Frame("测试窗口")创建窗口,运行后标题栏显示为居中,应当如何修改该Frame对象标题栏的对齐方式。