有一个奇怪的问题。我现在正在学习Java Swing,并且拥有一个具有设置大小的基本框架。我添加了按钮,然后是单选按钮,一切都很好。我添加了一个JTextField,框架上的所有内容都是空白的,直到我手动调整大小,然后出现一切。我已经尝试过使用Grids和GridBagConstraints,似乎没有任何帮助,但我还没有很好地处理这些问题。我相信一切都是正确的尺寸,但是盒子打开了空白,然后当我在任何方向上改变尺寸时,一切都显示正常。
到目前为止,这是我的代码:
TRUE
所以基本上它需要看起来像顶部的2个按钮,这些按钮下面的2个按钮,下面的2个单选按钮,然后是单选按钮下的TextField。
我将不胜感激。
谢谢!
答案 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教程以获取更多信息。