0

我在 Jpanel 中有一个 jbutton,它具有带有尾随对齐的 FlowLayout。这段代码实际上在 ubuntu 环境中工作,但是当我在 centos 环境中运行它时,文本不适合按钮。

JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING));
myButton = new JButton("My Text");
buttonPanel.add(myButton);

然后我添加以下几行:

JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING));
myButton = new JButton("My Text");
int width=myButton.getFontMetrics(exportButton.getFont()).stringWidth(myButton.getText());
int height=myButton.getFontMetrics(myButton.getFont()).getHeight()+10;
myButton.setPreferredSize(new Dimension(width+30, height));
buttonPanel.add(myButton);

这些额外的行有所帮助,但似乎解决方案并不好。

4

2 回答 2

3
  • FlowLayout默认情况下接受PreferredSize来自JComponents

  • JButton默认情况下不需要重新计算PreferredSize,让我们正确地工作LayoutManagerFlowLayout只接受PreferredSize

  • 最重要的是在容器(,...)pack()之前调用(构造函数中的最后一行代码)setVisible(true)JFrameJDialog

  • 每个都JComponent可以返回自己的正确PreferredSize值,然后没有理由覆盖或设置此值,在某些情况下,对于空JPanel(专业定制绘画)或JScrollPane

于 2012-11-27T12:07:32.160 回答
0

由于使用了不同的系统字体,这很可能发生。您可以尝试使用自定义外观来覆盖原生外观。您可能会发现此链接很有用。

于 2012-11-27T12:05:39.067 回答