作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 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/
我是一名优秀的程序员,十分优秀!