에 중간 패널 뷰의 중심을 나는 UI
3 개 패널, leftPanel
, middlePanel
및 rightPanel
을 구축해야, 패널 Horizontally
어떻게 스윙
left
을 정렬해야하며 right
패널로 maximum
및 equal
폭을 얻어야한다 가능한 한 중간 패널은 하위 컴포넌트로 너비가 minimum
이 될 수 있지만 일단 패널이 추가되면보기는 가운데 패널로 중앙에 위치해야합니다.
가 나는 UI 내가 오라클 스윙 튜토리얼 사이트에서 Rule
클래스를 사용했다
import java.awt.Color;
import java.awt.GridBagLayout;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class SwingTest extends JFrame {
private static final long serialVersionUID = 1L;
public SwingTest() {
setTitle("Swing Test");
setSize(750, 350);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(getParent());
// Rule used to find the component positions, for the testing purpose
Rule rule = new Rule(Rule.HORIZONTAL, true);
rule.setPreferredWidth(10);
rule.setPreferredHeight(40);
SidePanel leftPanel = new SidePanel("Left");
SidePanel rightPanel = new SidePanel("Right");
JPanel middlePanel = new JPanel();
middlePanel.setBorder(BorderFactory.createLineBorder(Color.black));
// Add left,right and middle panel horizontally
JPanel containerPanel = new JPanel();
containerPanel.setLayout(new BoxLayout(containerPanel, BoxLayout.X_AXIS));
containerPanel.add(leftPanel);
containerPanel.add(middlePanel);
containerPanel.add(rightPanel);
// Add rule and container panel Vertically
JPanel outerPanel = new JPanel();
outerPanel.setLayout(new BoxLayout(outerPanel, BoxLayout.Y_AXIS));
outerPanel.add(rule);
outerPanel.add(containerPanel);
add(outerPanel);
}
public static void main(String[] args) {
SwingTest test = new SwingTest();
test.setVisible(true);
}
private static class SidePanel extends JPanel {
private static final long serialVersionUID = 1L;
private SidePanel(String text) {
setLayout(new GridBagLayout());
add(new JLabel(text));
}
}
}
을 구축하는 테스트 코드를 다음과 같은 짓을, 구성 요소의 위치를 찾을 수 있습니다. Rule.java
내가 UI 스크린 샷과 같이있다가 문제,보기를 가운데 패널 중심으로 얻을되지 얻을, 지금보기는 왼쪽 + 중간 패널 = 오른쪽 패널 '
I'의 폭으로 중심 수동으로 패널 높이와 너비를 설정하지 않으려면 LayoutManager
자체에서 처리해야합니다. 내가 원하는 무엇
중간 패널 방식 left + middle/2 = middle/2 + right
패널 폭 중심으로 얻을 수있다이다.
중간 패널을 중앙에 배치하여 볼 수있는 방법을 찾지 못했습니다. 누군가이 솔루션을 찾도록 도와 줄 수 있습니까?