Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 LayoutManager 및 LayoutManager 유형은 무엇입니까?

<시간/>

레이아웃 관리자를 사용하면 컨테이너 내 구성 요소의 크기와 위치를 결정하여 시각적 구성 요소가 GUI 형식으로 배열되는 방식을 제어할 수 있습니다.

LayoutManager 유형

Java에는 6개의 레이아웃 관리자가 있습니다.

  • FlowLayout :페이지의 단어처럼 컨테이너에 구성 요소를 정렬합니다. 왼쪽에서 오른쪽으로, 위에서 아래로 맨 윗줄을 채웁니다. . 구성 요소는 추가되는 순서대로 정렬됩니다. 즉, 첫 번째 구성 요소가 왼쪽 상단에 표시되고, 컨테이너가 모든 구성 요소를 표시할 만큼 충분히 넓지 않은 경우 줄을 감쌉니다. 구성 요소 간의 수직 및 수평 간격을 제어할 수 있습니다. 구성요소는 왼쪽, 가운데 또는 오른쪽으로 정렬될 수 있습니다.
  • 테두리 레이아웃 :컨테이너의 가장자리 또는 중간을 따라 모든 구성요소를 정렬합니다(예:위, 아래, 오른쪽 및 왼쪽 ). 영역의 가장자리. 상단 또는 하단에 추가된 구성 요소는 기본 높이를 갖지만 너비는 컨테이너의 너비가 되고 왼쪽 또는 오른쪽에 추가된 구성 요소도 기본 너비를 갖지만 높이는 컨테이너의 나머지 높이가 됩니다. 중앙에 추가된 구성 요소는 원하는 높이나 너비를 얻지 못합니다. 컨테이너의 나머지 영역을 덮습니다.
  • 그리드 레이아웃 :동일한 크기의 셀 그리드에 모든 구성요소를 정렬합니다. , 왼쪽에서 오른쪽으로 추가 t 및 위에서 아래로 . 하나의 구성 요소만 셀에 배치할 수 있으며 그리드의 각 영역은 동일한 크기를 갖습니다. 컨테이너의 크기가 조정되면 모든 셀의 크기가 자동으로 조정됩니다. 셀에 구성 요소를 배치하는 순서는 추가될 때 결정됩니다.
  • GridBagLayout :모든 구성 요소를 셀 그리드에 배열하고 컨테이너의 크기를 조정할 때마다 개체의 종횡비를 유지하는 강력한 레이아웃입니다. 이 레이아웃에서는 셀의 크기가 다를 수 있습니다. 구성 요소 간에 일관된 수평 및 수직 간격을 할당합니다. 이를 통해 열 또는 행 내의 구성요소에 대한 기본 정렬을 지정할 수 있습니다.
  • BoxLayout :수직 또는 수평으로 여러 구성요소를 정렬합니다. , 하지만 둘 다 아닙니다. 구성요소는 왼쪽에서 오른쪽으로 또는 위에서 아래로 정렬됩니다. . 구성요소가 가로 정렬된 경우 , 모든 구성 요소의 높이는 가장 큰 구성 요소와 동일하고 동일합니다. 구성요소가 수직으로 정렬된 경우 , 모든 구성 요소의 너비는 가장 큰 너비 구성 요소와 동일하고 동일합니다.
  • 카드 레이아웃 :같은 크기의 컴포넌트를 두 개 이상 배열합니다. 구성요소는 덱에 정렬됩니다. , 동일한 크기의 모든 카드와 항상 맨 위 카드만 표시 . 컨테이너에 추가된 첫 번째 구성 요소는 데크의 맨 위에 유지됩니다. 왼쪽, 오른쪽, 위쪽 및 아래쪽 가장자리의 기본 간격은 0이며 카드 구성요소는 가로 또는 세로로 표시됩니다.

예시

import java.awt.*;
import javax.swing.*;
public class LayoutManagerTest extends JFrame {
   JPanel flowLayoutPanel1, flowLayoutPanel2, gridLayoutPanel1, gridLayoutPanel2, gridLayoutPanel3;
   JButton one, two, three, four, five, six;
   JLabel bottom, lbl1, lbl2, lbl3;
   public LayoutManagerTest() {
      setTitle("LayoutManager Test");
      setLayout(new BorderLayout()); // Set BorderLayout for JFrame
      flowLayoutPanel1 = new JPanel();
      one = new JButton("One");
      two = new JButton("Two");
      three = new JButton("Three");
      flowLayoutPanel1.setLayout(new FlowLayout(FlowLayout.CENTER)); // Set FlowLayout Manager
      flowLayoutPanel1.add(one);
      flowLayoutPanel1.add(two);
      flowLayoutPanel1.add(three);
      flowLayoutPanel2 = new JPanel();
      bottom = new JLabel("This is South");
      flowLayoutPanel2.setLayout (new FlowLayout(FlowLayout.CENTER)); // Set FlowLayout Manager
      flowLayoutPanel2.add(bottom);
      gridLayoutPanel1 = new JPanel();
      gridLayoutPanel2 = new JPanel();
      gridLayoutPanel3 = new JPanel();
      lbl1 = new JLabel("One");
      lbl2 = new JLabel("Two");
      lbl3 = new JLabel("Three");
      four = new JButton("Four");
      five = new JButton("Five");
      six = new JButton("Six");
      gridLayoutPanel2.setLayout(new GridLayout(1, 3, 5, 5)); // Set GridLayout Manager
      gridLayoutPanel2.add(lbl1);
      gridLayoutPanel2.add(lbl2);
      gridLayoutPanel2.add(lbl3);
      gridLayoutPanel3.setLayout(new GridLayout(3, 1, 5, 5)); // Set GridLayout Manager
      gridLayoutPanel3.add(four);
      gridLayoutPanel3.add(five);
      gridLayoutPanel3.add(six);
      gridLayoutPanel1.setLayout(new GridLayout(2, 1)); // Set GridLayout Manager
      gridLayoutPanel1.add(gridLayoutPanel2);
      gridLayoutPanel1.add(gridLayoutPanel3);
      add(flowLayoutPanel1, BorderLayout.NORTH);
      add(flowLayoutPanel2, BorderLayout.SOUTH);
      add(gridLayoutPanel1, BorderLayout.CENTER);
      setSize(400, 325);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   public static void main(String args[]) {
      new LayoutManagerTest();
   }
}

출력

Java에서 LayoutManager 및 LayoutManager 유형은 무엇입니까?