我在将 MigLayout 与动态更改 MigLayout 单元格中显示的组件的字体大小结合使用时遇到问题。
详细说明:我通过 MigLayout 向 JPanel 添加了一个 JCheckBox。JCheckBox 的字体大小为默认值(12pt?),包含 JCheckBox 的行的首选高度为 17lp。这一切都很好。(在这里查看:http: //www.bilderload.com/bild/227327/migproblemcellheight1UQXP2.png)
现在我将字体大小更改为例如 20pt 并再次启动程序。现在 JCheckBox 的文本被剪切,因为该行的高度也为 17lp。(在这里查看:http: //www.bilderload.com/bild/227328/migproblemcellheight2DDPGJ.png)
例如,如果我让行定义为空(“[]”),则文本以两种字体大小正确显示 - 正常和大字体。但在这种情况下,遗憾的是,该行永远不会达到最低 17lp。(它总是至少有 23lp 左右)
如何更改 MigLayout 定义以获得 17lp 的最小行高并让单元格与组件字体大小/文本等一起正确增长?或者也许这是一个 L&F 问题?
谢谢和最好的问候,
菲利普
这是我的示例代码(工作示例):
import java.awt.Font;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;
public class TestMigLayoutFontSize extends JFrame {
public TestMigLayoutFontSize() {
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(), 20);
// testBox.setFont(normalFont);
testBox.setFont(largeFont);
JPanel tempPanel = new JPanel(new MigLayout("debug", "0lp![grow,fill]0lp!", "[17lp:17lp: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 TestMigLayoutFontSize();
}
}