MigLayoutセルに表示されるコンポーネントのフォントサイズを動的に変更することと組み合わせてMigLayoutを使用すると問題が発生します。
詳細:MigLayoutを介してJCheckBoxをJPanelに追加しました。JCheckBoxのフォントサイズはデフォルト(12pt?)であり、JCheckBoxを含む行の推奨高さは17lpです。それはすべてうまくいきます。(ここを表示:http://www.bilderload.com/bild/227327/migproblemcellheight1UQXP2.png)
次に、フォントサイズをたとえば20ptに変更して、プログラムを再起動します。行の高さも17lpであるため、JCheckBoxのテキストが切り取られます。(ここを表示: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();
}
}