如何同时只显示一个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窗口的主要内容,如果未能解决你的问题,请参考以下文章