2013-08-12 91 views
1

我剛剛開始學習Swing/JFrame,基本上製作了一個GUI。 我一直在使用Java一個月,只是使用控制檯,製作一個罪惡/真或假的遊戲,現在對我來說很容易。Java JFrame gui - 爲什麼不顯示按鈕?

我決定採取進一步措施,我必須說這完全是一種痛苦,不同的邏輯。

這是我到目前爲止已經完成:

Main.java:

import java.awt.*; 
import javax.swing.*; 
import java.io.*; 

class Main { 
    public static void main(String[] args) { 
     final Gui gui = new Gui(); 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       gui.createMyGui(); 
      } 
     }); 
    } 
} 

gui.java

class Gui { 

    protected JFrame j = new JFrame("My First window"); 
    protected JPanel p = new JPanel(); 
    protected Container c; 

    public Gui() { 
     j.setSize(500, 400); 
     p.setSize(j.getSize()); 
     this.c = j.getContentPane(); 
    } 

    public void createMyGui() { 
     setButtons(); 
     setGuiBackground(); 
     j.setVisible(true); 
     p.setVisible(true); 
     this.c.add(p); 
    } 

    private void setGuiBackground() { 
     this.c.setBackground(Color.green); 
    } 

    private void setButtons() { 
     p.add(new JButton("Hey")); 

    } 
} 

問題

我真的不能讓按鈕出現,人們告訴我使用setBounds,但我我不確定如何開始,因爲我甚至無法在那裏放置按鈕。我試過尋找我的問題,但實際上沒有運氣。

基本上會發生什麼是一個500x400綠色的GUI打開,就是這樣。

爲什麼不顯示按鈕?

+1

第一個提示,不要使用'setBounds'。 ['LayoutManager'](http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html)旨在讓你的生活更輕鬆:) – NiziL

回答

6

人們告訴我使用的setBounds 不要!佈局管理員是正確的選擇。

你的問題是,你把你的按鈕,將「P」面板,但你永遠不它(P面板)添加到contentPane

+0

更新我的代碼,新問題:按鈕顯示在中心現在,但背景絕對變白了,爲什麼會發生這種情況?我怎樣才能設置我的具體位置按鈕? –

+0

這就是因爲你的「p」面板是在你的contentPane的「頂部」 要麼 1)將綠色設置爲「p」面板或2)使用setOpaque(假) 使它透明你真的需要通過http://docs.oracle.com/javase/tutorial/uiswing/ – maneesh

+0

這工作,非常感謝! –