Swing GroupLayout: 구성 요소 크기 조정 및 제한 관리
Swing에서 GroupLayout은 구성 요소 레이아웃 관리를 위한 강력한 메커니즘을 제공합니다. 그러나 동적 콘텐츠 및 반응형 레이아웃을 처리할 때는 구성 요소 크기의 크기 조정 및 제한을 제어해야 합니다.
동적으로 생성된 여러 데이터 입력 양식이 다음과 유사한 레이아웃으로 GroupLayout을 사용하는 시나리오를 생각해 보세요.
*-----------------------------------------------* | label A | field A | | label B | field B | | label C | field C | *-----------------------------------------------*
레이블(JLabel 인스턴스)의 최대 너비를 상위 프레임 너비의 특정 부분으로 제한하려면 다음을 사용할 수 있습니다. ComponentListener:
public void componentResized(ComponentEvent e) { int maxW = parentFrame.getWidth() / 3; for (JLabel l : labels) { l.setMaximumSize( // have also tried setSize() and setPreferredSize() new Dimension( Math.min(l.getSize().width, maxW), l.getMaximumSize().height)); } groupLayout.invalidateLayout(getContentSpace()); }
그러나 이 접근 방식은 원하는 결과를 얻지 못할 수 있습니다.
제안 솔루션: GroupLayout의 기본 크기 활용
GroupLayout은 선호하는 크기에 의존하여 보다 우아한 솔루션을 제공합니다. 라벨:
public class GroupPanel extends JPanel { // ... // Create a GroupLayout and set group constraints GroupLayout layout = new GroupLayout(this); this.setLayout(layout); layout.setAutoCreateGaps(true); layout.setAutoCreateContainerGaps(true); layout.setHorizontalGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING) .addComponent(label1) .addComponent(label2) .addComponent(label3)) .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) .addComponent(field1) .addComponent(field2) .addComponent(field3)) ); layout.setVerticalGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(label1) .addComponent(field1)) .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(label2) .addComponent(field2)) .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(label3) .addComponent(field3)) ); // ... }
이 접근 방식의 이점:
그룹 레이아웃은 기본 크기 메커니즘을 활용하여 구성 요소를 관리하는 간단하고 효과적인 방법을 제공합니다. 동적으로 생성된 데이터 입력 양식의 크기 조정 및 제한.
위 내용은 Swing의 GroupLayout은 어떻게 동적으로 생성된 양식의 구성요소 크기 조정 및 크기 제한을 효과적으로 관리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!