你必須設置你的文本字段中的列數,或給一個默認的文本。下面的代碼應該適合你。我已更新以前的答案以使用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);
}
}
希望這會有所幫助。快樂的編碼!
您所做的只是創建一個'JTextField'對象,您從未以任何方式將它添加到面板中。 – CollinD
而'setBounds'將在佈局管理器 – MadProgrammer
的控制下毫無意義。這個'setLayout(new FlowLayout());'這個'txt.setBounds(400,300,50,20);'是不兼容的。文本字段的位置由佈局(+佈局填充和邊框)控制。文本字段的大小部分取決於佈局,還取決於爲其設置的列數以及字體大小。 –