2015-12-12 75 views
1

當我把主機佈局等於null並運行應用程序時,它什麼也沒有顯示,但是如果我把它等於flowlayout()它顯示標籤。我不想使用flowlayout,因爲我想設置邊界並指定每個組件的座標。以下代碼中的問題是什麼?爲什麼我無法在佈局爲空時顯示框架?

public class pr8 extends JFrame 
{  

    Font font; 
    Map attributes; 

    JPanel MainFrame; 
    JPanel PicFrame; 

    JLabel MainTitle; 

    JLabel Name; 
    JTextField NameInput; 

    public pr8 (String Title) 
    { 
    super (Title); 

    MainFrame = new JPanel(); 
    this.add (MainFrame); 
    MainFrame.setVisible (true); 
    MainFrame.setLayout (null); 

    MainTitle = new JLabel("Student Entry Form"); 
    MainFrame.add (MainTitle); 
    MainTitle.setFont(new Font("Serif", Font.PLAIN, 24)); 
    font = MainTitle.getFont(); 
    attributes = font.getAttributes(); 
    attributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON); 
    MainTitle.setFont(font.deriveFont(attributes)); 
    MainTitle.setBounds(400, 50, 200, 30); 

    Name = new JLabel ("Enter your name"); 
    MainFrame.add (Name); 
    Name.setFont(new Font("Serif", Font.PLAIN, 24)); 
    Name.setBounds (100, MainTitle.getY() + 50, 30, 30); 
    NameInput = new JTextField ("Name"); 
    MainFrame.add (NameInput); 
    NameInput.setBounds(Name.getX() + 30, Name.getY(), 60, 30); 
    } 
} 
+0

你有一個JFrame嗎?你需要一個JFrame來包含一個JPanel – Dan

+0

請發佈一個[SSCCE](http://sscce.org)。 'MainTitle'和'attributes'沒有定義。 – markspace

+0

@Dan yes類本身擴展JFrame –

回答

2

如果您設置的JPanel爲空的佈局,您可能需要設置你JPanel的大小:

panel.setPreferredSize(new Dimension(400, 300)); 
//In your case: mainFrame.setPreferredSize(/*your dimension*/); 

還要確保您調用您的JFrame pack()和你的JFrame的佈局不是空值。

+0

@HwangHeeRa_Gogo根據我的經驗,這是什麼導致你的JPanel隱形。嘗試一下,讓我知道結果。 – user3437460

+1

終於有效了,謝謝:) –

相關問題