2013-02-23 72 views
1

解決:@Desolator已經得到了我的編碼在評論完全工作如下Java的難題 - 試圖讓一個按鈕後,GUI配置單擊

好了,我已經通過對方發3班,所有鏈接:

閃屏>項目分配> CompareSignature

我想談的類是閃屏類:這一類

,所以我有3種方法:

public static void createAndShowGUI() - 此方法包含所有用於創建和顯示GUI的信息 - JFrame frame = new JFrame(「Welcome!」);等等......

public void actionPerformed(ActionEvent e) - 此方法使按鈕我必須要點擊的能力,並打開下一個GUI - 如果(e.getSource()== enterButton)等等

public static void main(String[] args) - 此方法只是具有「createAndShowGUI();」在代碼運行時GUI顯示

我需要做的是能夠給JButton另一個操作來關閉SplashScreen類(從createAndShowGUI),當它被點擊時,但我的問題是即:

  1. 我不能從actionPerformed方法爲createAndShowGUI方法createAndShowGUI方法引用JFrame frame = new JFrame("");是靜態

  2. 現在你說「只是採取了‘靜態’關鍵字出來的地方」的JFrame框架;「在變量部分」...如果我這樣做,那麼該public static void main(String[] args)不會採取createAndShowGUI();方法和圖形用戶界面將不會顯示

  3. 我試圖把在actionPerformed方法:

    if(e.getSource()==enterButton){ 
    System.exit(0); 
    } 
    

AND ...

if(e.getSource()==enterButton){ 
    frame.dispose(); //Cannot reference frame from static createAndShowGUI method 
    } 

所以我很茫然,是否可以通過點擊按鈕關閉SplashScreen類?在此先感謝

+0

你可以提供孔類代碼嗎? (如果足夠小) – 2013-02-23 11:57:57

+2

爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2013-02-23 12:05:19

+0

@Desolator當然,我現在編輯這篇文章,它是72行長,所以它不是一個大文件,謝謝 – 2013-02-23 12:30:17

回答

0

我從here採取以下示例。也許你採取了相同的方式,因爲createAndShowGUI方法具有相同的名稱...我通過一個按鈕和一個適當的偵聽器來處理幀。你的問題對我來說有點難以理解,但我認爲這個例子會回答你的問題。

public class FrameDemo { 
private static void createAndShowGUI() { 
    final JFrame frame = new JFrame("FrameDemo"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JButton button = new JButton("Exit"); 
    button.setPreferredSize(new Dimension(175, 100)); 
    frame.getContentPane().add(button, BorderLayout.CENTER); 

    ActionListener buttonListener = new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      frame.dispose(); 
     } 
    }; 
    button.addActionListener(buttonListener); 

    frame.pack(); 
    frame.setVisible(true); 
} 

public static void main(String[] args) { 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      createAndShowGUI(); 
     } 
    }); 
} 
} 
+0

我沒有看到這個編碼beofre,但這幾乎是解決方案,當我看到它,我津津有味,但有點但當我來引用我的按鈕,它不能從靜態類內引用,我有我的按鈕作爲JButton enterButton;在頁面頂部 – 2013-02-23 12:28:15

+0

@tombannister關於您的更新:在SplashScreen1的構造函數中創建JFrame。這會將'frame'從靜態上下文移動到實例。 – Kai 2013-02-23 12:35:51

相關問題