我在使用MigLayout並動態更改MigLayout單元格中顯示的組件的字體大小時遇到問題。MigLayout行高並更改字體大小
詳細說明:我通過MigLayout添加了一個JCheckBox到一個JPanel。 JCheckBox的字體大小是默認的(12pt?),包含JCheckBox的行的首選高度爲17lp。這一切都很好。 (這裏查看:http://www.bilderload.com/bild/227327/migproblemcellheight1UQXP2.png)
現在我改變字體大小爲例如20pt並再次啓動程序。現在JCheckBox的文本被剪切,因爲該行也具有17lp的高度。如果我例如讓行定義爲空(「[]」),則文本在兩種字體大小(正常大小和大大小字體大小)下正確顯示。但在這種情況下,該行將永遠達不到最低17lp。 (它總是最低23lp左右)
如何更改MigLayout定義以獲得17lp的最小行高並使單元格隨着組件font-size/text等正確增長? 或者這可能是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();
}
}