Java-GUI(layout, 배치관리자)

최대 1 분 소요

Layout

  • 레이아웃은 항상 컨테이너에다가 적용 (컴포넌트 x)
  • BoxLayout
  • CardLayout

  • 어댑터
    • 리스너클래스의 구현클래스들을 전부 구현하기에 불필요할 때 이렇게 선택적으로 메소드구현할 수 있는데 어댑터클래스도 있음.
  • 패널3개 위에 부착하기 box랑 grid 레이아웃 둘 다 적용

  • JFormattedTextField 사용방법
     JFormattedTextField format;
     MaskFormatter mf = new MaskFormatter("####.##.##");
     mf.setPlaceholderCharacter('_');
     format = new JFormattedTextField(mf);
    

배치관리자

  • FlowLayout 배치관리자 : 컴포넌트가 삽입되는 순서대로 왼쪽에서 오른쪽으로 배치, 배치할 공간이 없으면 아래로 내려와서 반복
      public class FlowLayOutEx extends JFrame{
              public FlowLayOutEx() {
                      JPanel panel;
                      panel = new JPanel();
                      //패널에 배치를 담당하는 배치관리자를 flowlayout으로 하겠다는 의미
                      //panel.setLayout(new FlowLayout());
                      panel.setLayout(new FlowLayout(FlowLayout.CENTER,30,40));
                        
                      add(panel);
                      panel.add(new JButton("버튼1"));
                      panel.add(new JButton("버튼2"));
                      panel.add(new JButton("버튼3"));
                      panel.add(new JButton("버튼4"));
                      panel.add(new JButton("버튼5"));
                        
                      setTitle("flowlayout");
                      setSize(300, 200);
                      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                      setVisible(true);
              }
              public static void main(String[] args) {
                      new FlowLayOutEx();
              }
      }
    
  • BorderLayout 배치관리자 : 컨테이너의 공간을 동,서,남,북,중앙으로 5개의 영역으로 나눔. 5개의 영역에 컴포넌트를 배치.
      public class BorderLayoutEx extends JFrame{
              public BorderLayoutEx() {
                      JPanel panel = new JPanel();
                        
                      add(panel);
                      // borderlayout으로 배치관리자 지정
                      panel.setLayout(new BorderLayout());
                        
                      panel.add(new JButton("벝은1"), BorderLayout.CENTER);
                      panel.add(new JButton("벝은2"), BorderLayout.NORTH);
                      panel.add(new JButton("벝은3"), BorderLayout.SOUTH);
                      panel.add(new JButton("벝은4"), BorderLayout.EAST);
                      panel.add(new JButton("벝은5"), BorderLayout.WEST);
                        
                      setTitle("BORDER-LAYOUT");
                      setSize(300, 200);
                      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                      setVisible(true);
              }
              public static void main(String[] args) {
                      new BorderLayoutEx();
              }
      }
    

카테고리:

업데이트:

댓글남기기