gpt4 book ai didi

java - MigLayout 行高和更改字体大小

转载 作者:行者123 更新时间:2023-11-30 04:44:06 27 4
gpt4 key购买 nike

我在使用 MigLayout 与动态更改 MigLayout 单元格中显示的组件的字体大小时遇到​​问题。

详细信息:我通过 MigLayout 将 JCheckBox 添加到 JPanel。 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();
}
}

最佳答案

您可以通过减小边框大小来减少复选框周围的空间,例如放

testBox.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));

直接在testBox赋值之后。然后,您可以将行定义保留为空,并且仍然为面板获得合理的高度。

关于java - MigLayout 行高和更改字体大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11521570/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com