我怎么不一次显示多个窗口

时间:2015-06-21 11:23:40

标签: java

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

2 个答案:

答案 0 :(得分:0)

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

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

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字段,以便后续调用不必,而是他们将使用储值。

答案 1 :(得分:0)

一种可能的方法是使用SingleTone方法对框架类...访问使用getInstance()设计模式。