【问题标题】:MigLayout row-height and changing font-sizeMigLayout 行高和更改字体大小
【发布时间】:2012-07-18 17:06:00
【问题描述】:

我在将 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();
  }
}

【问题讨论】:

    标签: java swing user-interface miglayout


    【解决方案1】:

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

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

    在分配testBox 之后直接。然后,您可以将行定义留空,但仍可以获得面板的合理高度。

    【讨论】:

      【解决方案2】:

      以下内容对我有用。我认为问题在于,您指定了首选尺寸。

      问候 罗杰

      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();
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-14
        • 1970-01-01
        • 2019-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多