2017-12-28 13 views
0

MigLayout을 사용하여 세 행으로 나뉘어 진 패널을 만들려고합니다. 첫 번째 행과 마지막 행은 일정 비율의 푸시 Y (이 경우 2f)를 가져야하며 그 사이의 행은 남은 공간을 차지하기 위해 가능한 한 잘 자라야합니다.MigLayout - 확대 및 누름이있는 패널

그러나 마지막 행 (예 : 자체 패널)에는 구성 요소가 없습니다. 이 경우, 제 2 행이 모든 높이를 차지하기를 원하며 그것을 달성 할 수 없습니다.

다른 흐름 종속성 때문에 보이지 않게하는 것은 불가능합니다. 그것에 대해

public class TestClass { 

public static void main(String[] args) { 
    createPanel(true); 
    createPanel(false); 
} 

private static void createPanel(boolean removeAll) { 
    JFrame frame = new JFrame(); 
    JPanel panel = new JPanel(new MigLayout(new LC().fill().gridGap("0", "0").insetsAll("0"))); 

    panel.add(new JLabel("first row"), new CC().grow().newline().pushY(2f)); 

    JTextArea abc = new JTextArea("abc"); 
    abc.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED)); 
    panel.add(abc, new CC().push().grow().newline()); 

    JPanel pnl = new JPanel(new MigLayout(new LC().fill().gridGap("0", "0").insetsAll("0"))); 
    pnl.add(new JLabel("aaa"), new CC()); 
    pnl.add(new JLabel("bbb"), new CC().newline()); 
    pnl.add(new JLabel("ccc"), new CC().newline()); 
    panel.add(pnl, new CC().grow().newline().pushY(2f)); 
    if (removeAll) { 
     pnl.removeAll(); 
    } 
    frame.setContentPane(panel); 
    frame.setSize(100,800); 
    frame.setVisible(true); 
} 

}

enter image description here

답변

0

사용 dock 기능, 그래서 정상은 남쪽에서 북쪽으로, 바닥에 고정되며, 중간 줄 것 : 나는 여기에 코드를 첨부했습니다

그들 사이에서 자라십시오. http://www.miglayout.com/QuickStart.pdf 도킹 자습서의 no.5 페이지를 확인하십시오.

+0

답변을 주셔서 감사합니다. 실제로 세 개의 행이 모두 자랄 필요가 있지만 특정 비율로 성장해야합니다. 위쪽과 아래쪽 행의 크기가 커지지 않기 때문에 북쪽에서 북쪽으로 도킹하고 남쪽에서 아래쪽으로 밀어 넣으면 여전히 도움이되지 않습니다. –