0
저는 오른쪽, 위쪽 및 나머지 공간을 채우는 3 개의 패널로 구성된 MigLayout을 사용하여 레이아웃을 만들려고했습니다. 이처럼MigLayout 특정 레이아웃
: 가능한 몇 가지 솔루션이 있습니다
저는 오른쪽, 위쪽 및 나머지 공간을 채우는 3 개의 패널로 구성된 MigLayout을 사용하여 레이아웃을 만들려고했습니다. 이처럼MigLayout 특정 레이아웃
: 가능한 몇 가지 솔루션이 있습니다
. 나는 두 가지 예를 제시한다. 두 예제 모두 패널의 너비와 높이를 각각 으로 설정했습니다. 일반적으로 패널은 아이들이 에서 선호하는 패널을 가져옵니다.
첫 번째 레이아웃은 dock
제약 조건으로 수행됩니다.
package com.zetcode;
import java.awt.EventQueue;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;
public class MigLayoutThreePanels extends JFrame {
public MigLayoutThreePanels() {
initUI();
setTitle("Three panels");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
private void initUI() {
setLayout(new MigLayout());
JPanel pnl1 = new JPanel();
pnl1.setBorder(BorderFactory.createEtchedBorder());
JPanel pnl2 = new JPanel();
pnl2.setBorder(BorderFactory.createEtchedBorder());
JPanel pnl3 = new JPanel();
pnl3.setBorder(BorderFactory.createEtchedBorder());
add(pnl2, "w 40, dock east");
add(pnl1, "h 40, dock north");
add(pnl3, "w 250, h 200, dock center");
pack();
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
MigLayoutThreePanels ex = new MigLayoutThreePanels();
ex.setVisible(true);
}
});
}
}
3 개의 패널이 동쪽, 북쪽 및 중앙에 도킹됩니다. 간격 제한으로 패널 사이의 추가 공백을 만들 수 있습니다. 두 번째 예에서
, 우리는 격자 구조를 활용 사용.package com.zetcode;
import java.awt.EventQueue;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;
public class MigLayoutThreePanels2 extends JFrame {
public MigLayoutThreePanels2() {
initUI();
setTitle("Three panels");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
private void initUI() {
setLayout(new MigLayout("gap 3 3"));
JPanel pnl1 = new JPanel();
pnl1.setBorder(BorderFactory.createEtchedBorder());
JPanel pnl2 = new JPanel();
pnl2.setBorder(BorderFactory.createEtchedBorder());
JPanel pnl3 = new JPanel();
pnl3.setBorder(BorderFactory.createEtchedBorder());
add(pnl1, "h 40, growx");
add(pnl2, "w 40, spany 2, growy, wrap");
add(pnl3, "w 250, h 200, grow, push");
pack();
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
MigLayoutThreePanels2 ex = new MigLayoutThreePanels2();
ex.setVisible(true);
}
});
}
}
이 예에서는 셀과 컨테이너 인세 트 사이에 몇 가지 간격을 설정합니다.