자바 스윙 SpringLayout 탄성 레이아웃 구현 코드

1.개술
공식 자바 Docsapi:
  • javax.swing.SpringLayout
  • javax.swing.SpringLayout.Constraints
  • javax.swing.Spring
  • SpringLayout,신축성 레이아웃 관리자.이 레이아웃 을 사용 하 는 용기 안의 모든 구성 요소 나 용 기 는 하나의 제약 에 대응 합 니 다.이 제약 을 통 해 구성 요소 나 용기 네 변 의 좌표 위 치 를 정의 하여 구성 요소 에 대한 구 조 를 실현 합 니 다.이 구 조 는 주로 세 가지 유형 과 관련된다.SpringLayout,SpringLayout.Constraints,Spring 은 각각 구조 관리자,제약,좌표 거 리 를 나타 낸다.
    (1)SpringLayout
    레이아웃 관리 자 를 표시 합 니 다.이 레이아웃 관리 자 를 통 해 구성 요소 나 용기 의 제약 대상 을 가 져 올 수 있 습 니 다.다음 과 같 습 니 다.
    
    //                ,          
    SpringLayout layout = new SpringLayout();
    JPanel panel = new JPanel(layout);
    
    //        ,       
    JButton btn = new JButton("Button");
    panel.add(btn);
    
    //               (    ,     )
    SpringLayout.Constraints btnCons = layout.getConstraints(btn);
    //               (    ,     )
    SpringLayout.Constraints panelCons = layout.getConstraints(panel);
    
    
    (2)SpringLayout.Constraints
    구성 요소 의 위치 와 크기 에 대한 제약 을 표시 합 니 다.모든 구성 요소 인 스 턴 스 는 하나의 제약 대상 에 대응 합 니 다.이 제약 을 통 해 구성 요소 네 변 의 좌표 와 너비,높이 를 얻 고 설정 할 수 있 습 니 다.자주 사용 하 는 방법 은 다음 과 같 습 니 다.
    
    /*
     *           (   X     WEST,Y     NORTH)
     */
    void  setX(Spring x)
    void  setY(Spring y)
    Spring getX()
    Spring getY()
    
    /*
     *        
     */
    void  setWidth(Spring w)
    void  setHeight(Spring h)
    Spring getHeight()
    Spring getWidth()
    
    /*
     *               
     * edgeName          :
     *   SpringLayout.NORTH, SpringLayout.SOUTH, SpringLayout.EAST, SpringLayout.WEST
     *   SpringLayout.HORIZONTAL_CENTER, SpringLayout.VERTICAL_CENTER
     *   SpringLayout.BASELINE
     *   SpringLayout.WIDTH, SpringLayout.HEIGHT
     */
    Spring getConstraint(String edgeName)
    void  setConstraint(String edgeName, Spring s)
    
    
    (3)Spring
    Spring 은 SpringLayout 에서 거 리 를 측정 하 는 것 으로 볼 수 있다.하나의 Spring 인 스 턴 스 는 거리 나 길 이 를 표시 하고 간단 한 산술 연산(Spring 이 제공 하 는 정적 방법 으로 계산)을 지원 합 니 다.자주 사용 하 는 방법 은 다음 과 같 습 니 다.
    
    //           spring
    static Spring constant(int pref)
    
    //    spring   ,       spring
    static Spring sum(Spring s1, Spring s2)
    
    //      spring       
    static Spring max(Spring s1, Spring s2)
    
    //   spring    
    static Spring scale(Spring s, float factor)
    
    //               spring
    static Spring width(Component c)
    
    //               spring
    static Spring height(Component c)
    
    //   spring               
    int  getValue()
    void setValue(int value)
    
    
    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);
        jf.setSize(300, 200);
        jf.setLocationRelativeTo(null);
    
        //       ,       
        SpringLayout layout = new SpringLayout();
        JPanel panel = new JPanel(layout);
        jf.setContentPane(panel);
    
        //     
        JLabel label = new JLabel("Test JLabel: ");
        JButton btn = new JButton("Btn");
        JTextField textField = new JTextField("Text Field");
    
        //          
        panel.add(label);
        panel.add(btn);
        panel.add(textField);
    
        /*
         *        (         )
         */
    
        //       :             (5, 5)
        SpringLayout.Constraints labelCons = layout.getConstraints(label); //                (    ,     )
        labelCons.setX(Spring.constant(5));
        labelCons.setY(Spring.constant(5));
    
        //       :            5,              ;               
        SpringLayout.Constraints btnCons = layout.getConstraints(btn);
        btnCons.setX(Spring.constant(5));
        btnCons.setY(labelCons.getConstraint(SpringLayout.SOUTH));
        btnCons.setConstraint(SpringLayout.EAST, labelCons.getConstraint(SpringLayout.EAST));
    
        //      :                     + 5,       5
        SpringLayout.Constraints textFieldCons = layout.getConstraints(textField);
        textFieldCons.setX(
            Spring.sum(
                labelCons.getConstraint(SpringLayout.EAST),
                Spring.constant(5)
            )
        );
        textFieldCons.setY(Spring.constant(5));
    
        /*
         *     (  )     ,                         
         */
        SpringLayout.Constraints panelCons = layout.getConstraints(panel); //          
    
        //                       + 5
        panelCons.setConstraint(
            SpringLayout.EAST,
            Spring.sum(
                textFieldCons.getConstraint(SpringLayout.EAST),
                Spring.constant(5)
            )
        );
    
        //                           
        Spring maxHeightSpring = Spring.max(
            btnCons.getConstraint(SpringLayout.SOUTH),
            textFieldCons.getConstraint(SpringLayout.SOUTH)
        );
    
        //              maxHeightSpring + 5
        panelCons.setConstraint(
            SpringLayout.SOUTH,
            Spring.sum(
                maxHeightSpring,
                Spring.constant(5)
            )
        );
    
        //     
        jf.setVisible(true);
      }
    
    }
    
    
    결과 전시:

    SpringLayout 보다 상세 하고 구체 적 인 소개 와 사용 방식 은 자바 공식 문서 참조:How to Use SpringLayout
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기