Java 我怎么不';不要一次显示多个窗口

Java 我怎么不';不要一次显示多个窗口,java,Java,在我的项目中,我创建了一些按钮。单击按钮时,会出现一个框架。但当我点击相同的按钮时,同样的窗口又出现了。这会降低我的项目质量。我希望下次单击同一按钮时,帧不会出现,因为帧已经可见。我该怎么做呢?这取决于您是如何实现它的。 与其每次都创建一个新的框架,不如保留对它的引用,如果已经创建了,只需显示现有的框架即可 这里有一个简单的例子。这是一个有两个按钮的框架。其中一个每次创建一个新帧,另一个在您第一次单击它时创建一个帧,之后的任何时间都将显示该帧 import java.awt.*; import

在我的项目中,我创建了一些按钮。单击按钮时,会出现一个框架。但当我点击相同的按钮时,同样的窗口又出现了。这会降低我的项目质量。我希望下次单击同一按钮时,帧不会出现,因为帧已经可见。我该怎么做呢?

这取决于您是如何实现它的。 与其每次都创建一个新的框架,不如保留对它的引用,如果已经创建了,只需显示现有的框架即可

这里有一个简单的例子。这是一个有两个按钮的框架。其中一个每次创建一个新帧,另一个在您第一次单击它时创建一个帧,之后的任何时间都将显示该帧

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

class test {

  public static void main(String[] args) {

    JFrame main = new JFrame("Test");

    JButton btnAlways = new JButton("Always");
    JButton btnOnce = new JButton("Once");

    btnAlways.addActionListener(
      new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          JFrame frame = new JFrame(new Date().toString());
          frame.setSize(400, 300);
          frame.setVisible(true);
        }
      }
    );

    btnOnce.addActionListener(
      new ActionListener() {
        JFrame frame = null;

        public void actionPerformed(ActionEvent e) {
          if (frame == null) {
            frame = new JFrame(new Date().toString());
            frame.setSize(400, 300);
          }
          frame.setVisible(true);
        }
      }
    );

    main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    main.getContentPane().add(btnAlways, BorderLayout.NORTH);
    main.getContentPane().add(btnOnce, BorderLayout.SOUTH);
    main.setSize(300, 100);
    main.setVisible(true);

  }
}

btnOnce
的侦听器的
frame
字段最初设置为
null
。第一次单击按钮时,它将通过
if(…){…}
,创建一个帧,并将其分配给
字段,以便后续调用不必,相反,他们将使用存储的值。

一种可能的方法是为frame类使用
单音设计模式。.使用
getInstance()
方法访问。

我将如何实现它已被创建?是否有任何方法可以提供有关现有框架的任何信息?我是java初学者。添加了一些注释。如果您对Java不是很熟悉,您可能希望从一本关于Java语言的书开始,重点关注Java语言,而不是用户界面。