2015-10-12 108 views
2

這是我的代碼出於某種原因,我的JPanel沒有顯示出來

import javax.swing.*; 
import java.awt.*; 
import java.awt.Graphics; 
public class Test extends JFrame{ 
    private JButton by; 
    private JButton bn; 
    JLabel startQuestion; 

    public Test() { 
     JPanel p = new JPanel(); 
     by = new JButton("Yes"); 
     bn = new JButton("No"); 
     startQuestion = new JLabel("Would you like to start?"); 
     p.setLayout(null); 
     by.setBounds(180, 250, 70, 45); 
     bn.setBounds(250, 250, 70, 45); 
     startQuestion.setLocation(195, 240); 
     p.add(by); 
     p.add(bn); 
     add(startQuestion); 
     add(p); 
     setDefaultCloseOperation(3); 
     setSize(500, 500); 
     setVisible(true); 
    } 

    public static void main(String...args) { 
     new Test(); 
    } 
} 

有沒有語法錯誤,但是不加我的JLabel(按鍵做工精細)。我不想從null更改佈局,因爲我希望能夠定義按鈕和標籤的位置。有誰知道爲什麼這不起作用?

+2

你沒有在EDT上運行你的代碼。您必須閱讀[編寫Swing應用程序的教程](https://docs.oracle.com/javase/tutorial/uiswing/start/compile.html),並明確瞭解EDT是什麼以及爲什麼必須執行所有GUI代碼就可以了。 –

回答

2

這個問題類似於JLabel won't show with JPanel.setLayout(null). Why?

要在這裏回答這個問題,加上這樣一行:

startQuestion.setBounds(150, 150, 200, 20); 
+0

真誠的重複道歉。我沒有意識到null佈局有一個默認的零大小。非常感謝! –

+1

我會按照您提供的鏈接添加,**不要**使用'null'佈局,而應使用[佈局管理器](http://docs.oracle.com/javase/tutorial/uiswing/佈局/ visual.html) – Frakcool

0
import javax.swing.*; 
import java.awt.*; 
import java.awt.Graphics; 
public class Test extends JFrame{ 
    private JButton by; 
    private JButton bn; 
    JLabel startQuestion; 
     public Test() { 
     JPanel p = new JPanel(); 
     by = new JButton("Yes"); 
     bn = new JButton("No"); 
     startQuestion = new JLabel("Would you like to start?"); 
     //p.setLayout(null); 
     by.setBounds(180, 250, 70, 45); 
     bn.setBounds(250, 250, 70, 45); 
     startQuestion.setLocation(195, 240); 
     p.add(by); 
     p.add(bn); 
     add(startQuestion); 
     add(p); 
     setDefaultCloseOperation(3); 
     setSize(500, 500); 
     setVisible(true); 
     } 
     public static void main(String...args) { 
     new Test(); 
    } 
} 

注:

你需要註釋setlayout(null);

+0

我明白你來自哪裏,但如果我不使用setlayout(null);我將無法定位按鈕。 –

+0

你去其他一些佈局,請訪問以下鏈接.http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html –

相關問題