자바 스윙 GridBagLayout 격자 봉투 레이아웃 의 실현
7421 단어 SwingGridBagLayout그리드 백 레이아웃
공식 자바 Docsapi:java.awt.GridBagLayout
GridBagLayout,격자 봉투 레이아웃 관리자.구성 요소 의 크기 가 같 지 않 으 면 구성 요 소 를 수직,수평 또는 기본 라인 에 따라 정렬 할 수 있 습 니 다.모든 GridBagLayout 대상 은 하나의 동적 사각형 셀 을 유지 합 니 다.(동적 으로 하나의 셀 의 크기 를 계산 합 니 다)각 구성 요 소 는 하나 이상 의 셀 을 차지 합 니 다.이 셀 은 디 스 플레이 영역 이 라 고 합 니 다.각 구성 요소 의 디 스 플레이 영역 은 왼쪽 에서 오른쪽으로,위 에서 아래로 순서대로 배열 되 어 있 습 니 다.
2.구속:GridBagConstraints
GridBagConstraints 는 구성 요소 에 대한 제약 속성 을 패키지 합 니 다.GridBagLayout 가 관리 하 는 구성 요소 마다 이 제약 인 스 턴 스 를 연결 하여 구성 요소 가 있 는 디 스 플레이 구역 의 구체 적 인 배치 위치 와 구성 요소 가 디 스 플레이 영역 에서 정렬 하 는 방식 을 지정 합 니 다.
구성 요소 에 제약 조건 추가:GridBagLayout.setConstraints(Component comp,GridBagConstraints c)
PS:구성 요소(소재)디 스 플레이 영역(하나 이상 의 셀 구성)과 구성 요소 가 디 스 플레이 영역 에서 정렬 하 는 방식 이라는 두 가지 개념 을 이해 해 야 합 니 다.
3.속성:GridBagConstraints 의 속성
다음 속성 설명 에 있 는 대문자 상수 가 GridBagConstraints 클래스 에 정의 되 어 있 습 니 다.
3.1 디 스 플레이 영역 제약 속성
구성 요소 의 디 스 플레이 영역 관련 제약 속성 은 구성 요소 가 있 는 디 스 플레이 영역 에 직접 작용 합 니 다.
(1)gridx, gridy
구성 요소 디 스 플레이 영역 이 표시 되 기 시작 하 는 위치(셀 좌표),용기 왼쪽 상단 의 첫 번 째 셀 위 치 는(0,0),기본 값 은 RELATIVE 로'이전 구성 요소'(행렬 마지막 에 추 가 된 구성 요소)의'뒤에'를 표시 합 니 다.
(2)gridwidth, gridheight
구성 요 소 는 영역 수준/세로 방향 이 셀 의 개 수 를 표시 합 니 다.기본 값 은 1 입 니 다.여러 줄/열 을 차지 하려 면 전체 결과 에 충분 한 줄/열 이 필요 합 니 다.다음 두 개의 상수 특수 값 을 선택 할 수 있 습 니 다.
(3)weightx, weighty
추가 공간(셀 영역 외,용기 가장자리 내 간격)을 어떻게 분포 하 는 지 지정 한 줄/열 에 있 는 임의의 구성 요소 의 가중치(0 이상)가 있 으 면 이 줄/열 은(다른 줄/열 과 가중치 비례)추가 수준/수직 공간 을 분배 합 니 다.가중치 가 0(기본 값)일 때 전체 셀 영역 이 용기 중심 에 있 습 니 다.
PS:java.awt.Window.pack()방법 을 호출 하면 이 값 은 유효 하지 않 습 니 다.pack 이후 추가 공간 이 없 기 때 문 입 니 다.
3.2 구성 요소 제약 속성
구성 요소 관련 제약 속성 은 구성 요소 에 직접 작용 합 니 다.
(1)fill
디 스 플레이 영역 크기 가 구성 요소 에 필요 한 시간 보다 크 면 구성 요소 가 디 스 플레이 영역 에 채 워 집 니 다.가능 한 값 은 다음 과 같 습 니 다.
구성 요소 가 디 스 플레이 영역 내 위치(정렬 방식)에 있 습 니 다.다음 세 가지 값 이 있 을 수 있 습 니 다.
절대 치
상대 방향 값
기선 에 대한 값
NORTH
PAGE_START
BASELINE
SOUTH
PAGE_END
BASELINE_LEADING
WEST
LINE_START
BASELINE_TRAILING
EAST
LINE_END
ABOVE_BASELINE
NORTHWEST
FIRST_LINE_START
ABOVE_BASELINE_LEADING
NORTHEAST
FIRST_LINE_END
ABOVE_BASELINE_TRAILING
SOUTHWEST
LAST_LINE_START
BELOW_BASELINE
SOUTHEAST
LAST_LINE_END
BELOW_BASELINE_LEADING
CENTER(기본 값)
BELOW_BASELINE_TRAILING
(3)ipadx, ipady
구성 요소 의 내부 채 우기(구성 요소 의 내부 간격 으로 볼 수 있 음),즉 구성 요소 의 최소 크기 에 대한 추 가 량 입 니 다.구성 요소 의 폭 은 최소 너비/높이 에 ipadx/ipady 픽 셀 을 추가 합 니 다.
(4)insets
구성 요소 의 외부 채 우기(구성 요소 의 바깥쪽 거리 라 고 볼 수도 있 고 표시 영역 내 여백 이 라 고 볼 수도 있 습 니 다),즉 구성 요소 와 표시 영역 가장자리 사이 의 간격 이 가장 적 습 니 다.
PS:위의 각 속성 값 과 다른 요소 가 충돌 하거나 호 환 되 지 않 을 수 있 습 니 다.반드시 설정 이 효과 가 있 는 것 은 아 닙 니 다.실험 을 많이 하고 테스트 Demo 를 많이 써 서 시도 하 는 것 을 권장 합 니 다.
4.사례:GridBagLayout 사용 사례
먼저 효 과 를 보 여 줍 니 다.다음 그림 과 같 습 니 다.
각 단추 제약 조건 파라미터:
package com.xiets.swing;
import javax.swing.*;
import java.awt.*;
public class Main {
public static void main(String[] args) {
JFrame jf = new JFrame(" ");
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
GridBagLayout gridBag = new GridBagLayout(); //
GridBagConstraints c = null; //
JPanel panel = new JPanel(gridBag);
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");
JButton btn06 = new JButton("Button06");
JButton btn07 = new JButton("Button07");
JButton btn08 = new JButton("Button08");
JButton btn09 = new JButton("Button09");
JButton btn10 = new JButton("Button10");
/* */
// Button01
c = new GridBagConstraints();
gridBag.addLayoutComponent(btn01, c); // c
// Button02
c = new GridBagConstraints();
gridBag.addLayoutComponent(btn02, c);
// Button03
c = new GridBagConstraints();
gridBag.addLayoutComponent(btn03, c);
// Button04 ( ),
c = new GridBagConstraints();
c.gridwidth = GridBagConstraints.REMAINDER;
c.fill = GridBagConstraints.BOTH;
gridBag.addLayoutComponent(btn04, c);
// Button05 ( ),
c = new GridBagConstraints();
c.gridwidth = GridBagConstraints.REMAINDER;
c.fill = GridBagConstraints.BOTH;
gridBag.addLayoutComponent(btn05, c);
// Button06 ( ),
c = new GridBagConstraints();
c.gridwidth = GridBagConstraints.RELATIVE;
c.fill = GridBagConstraints.BOTH;
gridBag.addLayoutComponent(btn06, c);
// Button07 ( )
c = new GridBagConstraints();
c.gridwidth = GridBagConstraints.REMAINDER;
gridBag.addLayoutComponent(btn07, c);
// Button08 ,
c = new GridBagConstraints();
c.gridheight = 2;
c.fill = GridBagConstraints.BOTH;
gridBag.addLayoutComponent(btn08, c);
// Button09 ( ),
c = new GridBagConstraints();
c.gridwidth = GridBagConstraints.REMAINDER;
c.fill = GridBagConstraints.BOTH;
gridBag.addLayoutComponent(btn09, c);
// Button10 ( ),
c = new GridBagConstraints();
c.gridwidth = GridBagConstraints.REMAINDER;
c.fill = GridBagConstraints.BOTH;
gridBag.addLayoutComponent(btn10, c);
/* */
panel.add(btn01);
panel.add(btn02);
panel.add(btn03);
panel.add(btn04);
panel.add(btn05);
panel.add(btn06);
panel.add(btn07);
panel.add(btn08);
panel.add(btn09);
panel.add(btn10);
jf.setContentPane(panel);
jf.pack();
jf.setLocationRelativeTo(null);
jf.setVisible(true);
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swing 공통 구성 요소의 텍스트 상자 및 텍스트 영역1. JtextField(텍스트 상자) 사용 JtextField는 경량급 구성 요소로 한 줄의 텍스트를 편집하여 잘라내기, 복사, 붙여넣기, 단축키 등의 작업을 할 수 있으며, 텍스트의 길이가 표시 범위를 초과하면 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.