【发布时间】:2011-10-13 19:42:44
【问题描述】:
在一个窗口中,我将 JButton 添加到 BorderLayout 内的面板中。在另一个窗口中,使用相同的方式,我将 JButton 添加到 TableLayout 的“单元格”之一。第一个按钮是标准尺寸,第二个按钮不是。所以我试图了解第一个的大小,以便我可以为另一个设置相同的大小。不幸的是,运行这段代码:
nextButton = new JButton("NEXT");
System.out.println(nextButton.getWidth());
System.out.println(nextButton.getHeight());
nextButton.setSize(150, 100);
System.out.println(nextButton.getWidth());
System.out.println(nextButton.getHeight());
(在两个按钮上都试过)给出了以下输出:
- 0
- 0
- 150
- 100
此外,setSize 方法根本没有可见的效果。知道这里有什么问题吗?
--编辑--
revalidate() 方法不起作用
--EDIT 2--nextButton.setPreferredSize(new Dimension(150,100)); 导致更加混乱:对于两个窗口,由于 System.out.println 语句的结果,我得到了全零,并且有一个第一个窗口中按钮大小的可见变化,但第二个窗口仍然没有。
【问题讨论】:
-
您的组件/按钮在渲染之前没有大小。考虑将每个 JButton 嵌套在其自己的 JPanel 中,然后将 JPanel 添加到 TableLayout 作为一种可能的解决方案。
-
另外,大多数布局都尊重preferredSize,而不是大小,因此您通常需要调用setPreferredSize,而不是setSize。不过我不熟悉 TableLayout。
-
按钮的有效大小取决于字体大小和上面的文字。以及选择的外观和感觉。
-
我没有更改任何字体大小和外观。两个按钮的文本相同(“NEXT”),因此按钮应该相同。
标签: java swing user-interface jbutton