2012-07-17 4 views
1

MigLayout 셀에 표시된 구성 요소의 글꼴 크기를 동적으로 변경하는 것과 함께 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의 최소 행 높이를 얻고 셀이 구성 요소 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(); 
    } 
} 

답변

2

, 예를 들어, 넣기

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

testBox을 할당 한 직후. 그런 다음 행 정의를 비워두고 패널에 적합한 높이를 얻을 수 있습니다.

0

나를 위해 다음 작품. 나는 문제가, 당신이 선호하는 크기를 지정한다고 생각합니다.

감사 로저

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