【问题标题】:Can't get to know the size of a standard JButton无法了解标准 JButton 的大小
【发布时间】: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


【解决方案1】:

所以我试图了解第一个的大小,以便我可以为另一个设置相同的大小

button2.setPreferredSize( button1.getPreferredSize() );

【讨论】:

  • 完美!结果是:java.awt.Dimension[width=64,height=26]。谢谢!
  • +1 同意,PreferedSize 或者已经可见的Component可以返回Size
【解决方案2】:

试试nextButton.setPreferredSize(new Dimension(150,100))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 2016-02-29
    • 2020-09-29
    • 2020-01-17
    • 2014-10-04
    相关资源
    最近更新 更多