2015-06-21 63 views
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字段,以便后续调用不必使用,而是使用存储的值。

+0

说起来容易做起来难。 – CKing

+0

我将如何实现它已经创建?有没有什么方法可以给我关于现有框架的任何信息?我是java的初学者。 –

+0

增加了几个评论。如果你对Java不太熟悉,你可能想从一本关于该语言的书开始,专注于语言,而不是用户界面。 – Vlad

0

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

相关问题