2015-06-21 77 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()方法。

相關問題