Java MigLayout行高和更改字体大小
我在使用MigLayout和动态更改MigLayout单元格中显示的组件的字体大小时遇到问题 详细内容:我通过MigLayout向JPanel添加了一个JCheckBox。JCheckBox的字体大小为默认值(12pt?),包含JCheckBox的行的首选高度为17lp。一切正常。 (此处查看:) 现在我将字体大小更改为例如20pt,然后再次启动程序。现在,JCheckBox的文本被剪切,因为行的高度也是17lp。 (此处查看:) 例如,如果我将行定义设为空(“[]”),则文本将以两种字体大小正确显示—普通字体和大字体。但不幸的是,在这种情况下,这一排永远不会达到最低17磅。(始终至少有23lp左右) 如何更改MigLayout定义以获得17lp的最小行高,并使单元格与组件字体大小/文本等一起正确增长。? 或者这是L&F的问题 谢谢并致以最良好的问候 菲利普 下面是我的示例代码(工作示例):Java MigLayout行高和更改字体大小,java,swing,user-interface,miglayout,Java,Swing,User Interface,Miglayout,我在使用MigLayout和动态更改MigLayout单元格中显示的组件的字体大小时遇到问题 详细内容:我通过MigLayout向JPanel添加了一个JCheckBox。JCheckBox的字体大小为默认值(12pt?),包含JCheckBox的行的首选高度为17lp。一切正常。 (此处查看:) 现在我将字体大小更改为例如20pt,然后再次启动程序。现在,JCheckBox的文本被剪切,因为行的高度也是17lp。 (此处查看:) 例如,如果我将行定义设为空(“[]”),则文本将以两种字体大小正
您可以通过减小边框大小来减少复选框周围的空间,例如放置
testBox.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
在
testBox
的赋值之后。然后,您可以将行定义保留为空,并且仍然可以获得面板的合理高度。以下内容适用于我。我认为问题在于,您需要指定首选的尺寸
问候
罗杰
testBox.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
package de.test;
import java.awt.Font;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;
public class MigTest extends JFrame {
public MigTest() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(600, 400);
setContentPane(getTestPanel());
setVisible(true);
}
private JPanel getTestPanel() {
JCheckBox testBox = new JCheckBox("Program argument");
Font normalFont = testBox.getFont();
Font largeFont = new Font(testBox.getFont().getName(), testBox.getFont().getStyle(), 90);
// testBox.setFont(normalFont);
testBox.setFont(largeFont);
JPanel tempPanel = new JPanel(new MigLayout("debug", "0lp![grow,fill]0lp!", "[80:n:]"));
tempPanel.add(testBox);
JPanel testPanel = new JPanel(new MigLayout("", "[grow,fill]", "[grow,fill]"));
testPanel.add(tempPanel);
return testPanel;
}
public static void main(String[] args) {
new MigTest();
}
}