2017-01-30 115 views
-2

我JTextField是沒有顯示,只有的paintComponent爲什麼我不能在我的JPanel中插入我的JTextField?

public static final int WIDTH = 800; 
public static final int HEIGHT = 600; 

private JTextField txt; 

public Painel(){ 
    super(); 
    setFocusable(true); 
    setPreferredSize(new Dimension(WIDTH, HEIGHT)); 
    setLayout(new FlowLayout()); 
    txt = new JTextField(); 
    txt.setBounds(400, 300, 50, 20); 
} 
+4

您所做的只是創建一個'JTextField'對象,您從未以任何方式將它添加到面板中。 – CollinD

+4

而'setBounds'將在佈局管理器 – MadProgrammer

+1

的控制下毫無意義。這個'setLayout(new FlowLayout());'這個'txt.setBounds(400,300,50,20);'是不兼容的。文本字段的位置由佈局(+佈局填充和邊框)控制。文本字段的大小部分取決於佈局,還取決於爲其設置的列數以及字體大小。 –

回答

0

你必須設置你的文本字段中的列數,或給一個默認的文本。下面的代碼應該適合你。我已更新以前的答案以使用Gridbag佈局。不過,您仍然需要設置JTextField中的列數來呈現它。

public class TestFrame extends JFrame { 

    public static void main(String[] args) { 
     new TestFrame(); 
    } 

    private TestFrame() throws HeadlessException { 
     super(); 

     this.setLocationByPlatform(true); 
     JPanel contentPane = new JPanel(); 
     contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     setContentPane(contentPane); 
     GridBagLayout gbl_contentPane = new GridBagLayout(); 
     gbl_contentPane.columnWidths = new int[] { 100, 0 }; 
     gbl_contentPane.rowHeights = new int[] { 0, 0, 0 }; 
     gbl_contentPane.columnWeights = new double[] { 0.0, 1.0, Double.MIN_VALUE }; 
     gbl_contentPane.rowWeights = new double[] { 0.0, 0.0, Double.MIN_VALUE }; 
     contentPane.setLayout(gbl_contentPane); 

     JTextField textField = new JTextField(); 
     GridBagConstraints gbc_textField = new GridBagConstraints(); 
     gbc_textField.insets = new Insets(0, 0, 5, 0); 
     gbc_textField.fill = GridBagConstraints.HORIZONTAL; 
     gbc_textField.gridx = 1; 
     gbc_textField.gridy = 0; 
     contentPane.add(textField, gbc_textField); 
     textField.setColumns(10); 

     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.pack(); 
     this.setVisible(true); 
    } 
} 

希望這會有所幫助。快樂的編碼!

+0

它工作!萬分感謝 !!!我怎樣才能感謝你的幫助?我在這個網站上是新的 – Dormin

+0

'setPreferredSize(new Dimension(WIDTH,HEIGHT));'這只是對所需大小的猜測。 'txt.setBounds(400,300,50,20);'佈局將忽略它。 –

+0

如果我的回答爲您的問題提供瞭解決方案,您可以通過單擊綠色標記將其標記爲答案,或者也可以通過單擊upvote按鈕將其標記爲有用。無論如何,我很高興你做到了。 –

相關問題