java jbutton文本不适合不同的环境

时间:2012-11-27 12:01:17

标签: java swing ubuntu centos jbutton

我在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);

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

2 个答案:

答案 0 :(得分:3)

  • FlowLayout默认情况下来自PreferredSize

  • 的acceptiong JComponents 默认情况下,
  • JButton不需要重新计算PreferredSize,让正确的LayoutManager工作,FlowLayout只接受PreferredSize

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

  • 每个JComponent都可以返回自己的PreferredSize,然后没有理由覆盖或设置此值,在某些情况下,这可能与空JPanel不同(专业自定义绘画) )或JScrollPane

答案 1 :(得分:0)

由于使用了不同的系统字体,因此最有可能发生这种情况。您可以尝试使用自定义外观覆盖本机外观。您可能会发现this link有用。