Swing ...将JTextField空白添加到我的JPanel中

时间:2015-11-05 00:47:57

标签: java swing

有一个奇怪的问题。我现在正在学习Java Swing,并且拥有一个具有设置大小的基本框架。我添加了按钮,然后是单选按钮,一切都很好。我添加了一个JTextField,框架上的所有内容都是空白的,直到我手动调整大小,然后出现一切。我已经尝试过使用Grids和GridBagConstraints,似乎没有任何帮助,但我还没有很好地处理这些问题。我相信一切都是正确的尺寸,但是盒子打开了空白,然后当我在任何方向上改变尺寸时,一切都显示正常。

到目前为止,这是我的代码:

TRUE

所以基本上它需要看起来像顶部的2个按钮,这些按钮下面的2个按钮,下面的2个单选按钮,然后是单选按钮下的TextField。

我将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:2)

在使框架可见之前,应将组件添加到框架中。

f = new JFrame("ATM Machine");
//f.setVisible(true);
...
f.add(p);
f.setVisible(true);
  

并且具有设定尺寸的基本框架。

不要设置框架的大小。让Swing确定每个组件的大小和框架的大小。所以代码应该是:

f.add(p);
f.pack();
f.setVisible(true);

不要设置按钮的preferredSize()。如果您希望所有按钮的大小相同,请在单独的面板上使用GridLayout:

JPanel buttons = new JPanel( new GridLayout(0, 4) );
buttons.add(b1);
buttons.add(b2);
...

然后将按钮面板添加到框架中。

此外,您还需要更改布局管理器。现在您正在使用FlowLayout,并且布局似乎只能正常工作。如果调整框架大小,组件将流向另一条线。也许你需要使用BoxLayout

阅读Using Layout Manager上的Swing教程以获取更多信息。