2013-12-11 34 views
0

我一直在做一些圖形用戶界面的東西來練習決賽,我想我已經掌握了基礎知識。但是,每當我嘗試將JTextField添加到我的JPanel時,我的JButton都會被擦除,整個界面就會消失。最終,當我點擊按鈕時,我希望文本區域發生變化,但我甚至無法看到文本區域。我知道我可能犯了一個真正的新手錯誤,所以請不要殺了我。下面的代碼不起作用 - 然而,一旦我脫離了JTextField,它運行良好。不能將JTextfield添加到JPanel

import javax.swing.*; 
import java.awt.event.*; 
import java.awt.*; 
import javax.swing.JTextField; 

public class test5 { 

    private JFrame f; 
    private JPanel p; 
    private JButton b1; 
    private JTextField jt; 

    public test5() { 
     gui(); 
    } 
    public void gui() { 
     f = new JFrame(); 
     f.setVisible(true); 
     f.setSize(600,400); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     jt = new JTextField(20); 
     jt.setEditable(false); 

     p = new JPanel(); 
     p.setBackground(Color.YELLOW); 
     b1 = new JButton("TEST"); 
     b1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       JOptionPane.showMessageDialog(null, "Hey, hey, hey!"); 
       jt.setText("Hello"); 
      } 
     }); 

     p.add(b1); 
     p.add(jt); 

     f.add(p, BorderLayout.SOUTH); 
    } 
    public static void main (String args[]) { 
     test5 test = new test5(); 
    } 
} 

回答

3

在使框架可見之前,您應該將所有組件添加到框架。請嘗試以下操作:

f.add(p, BorderLayout.SOUTH); 
f.pack(); 
f.setVisible(true); 
+0

哦!感謝您的迴應。但爲什麼? – Aire

+0

@Aire,默認情況下,所有組件的大小都是(0,0),所以它們不會被繪製。 pack()方法調用佈局管理器,該佈局管理器將根據佈局管理器的規則設置組件的大小/位置。 – camickr