자바 스윙 그룹 레이아웃 구현 코드

1.개술
공식 자바 DocsApi:javax.swing.GroupLayout
그룹 레이아웃 관리자.그것 은 Container 의 위 치 를 결정 하기 위해 단계별 로 그룹 을 구성 할 것 이다.GroupLayout 는 주로 생 성기 에 사용 할 수 있 습 니 다(병렬 그룹 과 직렬 그룹 생 성).그룹 은 Group Layout.Group 클래스 의 인 스 턴 스 로 이 루어 집 니 다.각 그룹 은 임의의 요소(Group,Component 또는 Gap)를 포함 할 수 있 습 니 다.
그룹 레이아웃 은 두 그룹 을 지원 합 니 다:
  • 직렬 그룹(sequential group):지정 한 방향(수평/수직)에 따라 요 소 를 순서대로 배치 합 니 다.
  • 병렬 그룹(parallel group):지정 한 방향(수평/수직)을 따라 원 소 를 병렬 배열 하여 네 가지 다른 방식 으로 하위 요 소 를 정렬 할 수 있 습 니 다.
  • PS:직렬 과 병렬 은 서로 다른 방향(수평/수직 방향)에 따라 요소 의 배열 방식 도 다르다(위 에서 아래로 또는 왼쪽 에서 오른쪽으로).
    Group 의 생 성 및 요소 추가:
    
    //        ,     
    GroupLayout layout = new GroupLayout(panel);
    
    //       
    GroupLayout.SequentialGroup seqGroup = layout.createSequentialGroup();
    //       
    seqGroup.addGroup(group);
    //        
    seqGroup.addComponent(component);
    //      
    seqGroup.addGap(size);
    
    //       
    GroupLayout.ParallelGroup paralGroup = layout.createParallelGroup();
    //       (       )
    paralGroup.addGroup([alignment,] group);
    //        (       )
    paralGroup.addComponent(component, [alignment]);
    //      
    paralGroup.addGap(size);
    
    
    GroupLayout 는 X 축(수평 방향)과 Y 축(수직 방향)을 단독으로 취급 하기 때문에 GroupLayout 에 게 수평 방향 과 수직 방향 에 각각 하나의 그룹 을 지정 하여 구성 요소 가 수평 방향 과 수직 방향 에 있 는 위 치 를 확인 해 야 합 니 다.
    GroupLayout 두 방향의 그룹 설정:
    
    //         (      X        )
    GroupLayout.setHorizontalGroup(GroupLayout.Group group);
    
    //         (      Y        )
    GroupLayout.setVerticalGroup(GroupLayout.Group group);
    2.코드 인 스 턴 스
    
    package com.xiets.swing;
    
    import javax.swing.*;
    
    public class Main {
    
      public static void main(String[] args) {
        JFrame jf = new JFrame("    ");
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    
        //         
        JPanel panel = new JPanel();
        //       ,     
        GroupLayout layout = new GroupLayout(panel);
        //        
        panel.setLayout(layout);
    
        //     
        JButton btn01 = new JButton("Button01");
        JButton btn02 = new JButton("Button02");
        JButton btn03 = new JButton("Button03");
        JButton btn04 = new JButton("Button04");
        JButton btn05 = new JButton("Button05");
    
        //            
        layout.setAutoCreateGaps(true);
        //                      
        layout.setAutoCreateContainerGaps(true);
    
        /*
         *    (    X       /    )
         *
         *     :     (    )
         *     :     (    )
         */
        //     (  ) btn01   btn02
        GroupLayout.ParallelGroup hParalGroup01 = layout.createParallelGroup().addComponent(btn01).addComponent(btn02);
    
        //     (  )btn03   btn04
        GroupLayout.ParallelGroup hParalGroup02 = layout.createParallelGroup().addComponent(btn03).addComponent(btn04);
    
        //     (  )hParalGroup01   hParalGroup02
        GroupLayout.SequentialGroup hSeqGroup = layout.createSequentialGroup().addGroup(hParalGroup01).addGroup(hParalGroup02);
    
        //     (  )hSeqGroup   btn05
        GroupLayout.ParallelGroup hParalGroup = layout.createParallelGroup().addGroup(hSeqGroup).addComponent(btn05, GroupLayout.Alignment.CENTER);
    
        layout.setHorizontalGroup(hParalGroup); //          (    )
    
        /*
         *    (    Y       /    )
         *
         *     :     (    )
         *     :     (    )
         */
        //     (  )btn01   btn03
        GroupLayout.ParallelGroup vParalGroup01 = layout.createParallelGroup().addComponent(btn01).addComponent(btn03);
    
        //     (  )btn02   btn04
        GroupLayout.ParallelGroup vParalGroup02 = layout.createParallelGroup().addComponent(btn02).addComponent(btn04);
    
        //     (  )vParalGroup01, vParalGroup02   btn05
        GroupLayout.SequentialGroup vSeqGroup = layout.createSequentialGroup().addGroup(vParalGroup01).addGroup(vParalGroup02).addComponent(btn05);
    
        layout.setVerticalGroup(vSeqGroup);  //          (    )
    
        jf.setContentPane(panel);
        jf.pack();
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
      }
    }
    결과 전시:

    5 개의 Button 배열 설명:
    X 축 방향(수평 방향):
  • Button 01 과 Button 02 를 그룹 01
  • 로 병행 합 니 다.
  • Button 03 과 Button 04 를 그룹 02
  • 로 병행 합 니 다.
  • 그룹 01 과 그룹 02 를 그룹 03
  • 으로 직렬
  • Group 03 과 Button 05 를 병행
  • Y 축 방향(세로 방향):
  • Button 01 과 Button 03 을 그룹 01
  • 로 병행 합 니 다.
  • Button 02 와 Button 04 를 그룹 02
  • 로 병행 합 니 다.
  • 그룹 01,그룹 02,Button 05 직렬
  • 이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기