我在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);
这些额外的线条似乎有所帮助,但似乎解决方案并不好。
答案 0 :(得分:3)
FlowLayout
默认情况下来自PreferredSize
JComponents
默认情况下, JButton
不需要重新计算PreferredSize
,让正确的LayoutManager
工作,FlowLayout
只接受PreferredSize
最重要的是在pack()
(构造函数中的最后一行代码行)之前调用setVisible(true)
容器(JFrame
,JDialog
...)
每个JComponent
都可以返回自己的PreferredSize
,然后没有理由覆盖或设置此值,在某些情况下,这可能与空JPanel
不同(专业自定义绘画) )或JScrollPane
答案 1 :(得分:0)
由于使用了不同的系统字体,因此最有可能发生这种情况。您可以尝试使用自定义外观覆盖本机外观。您可能会发现this link有用。