프로그래밍[Univ]/Swing Basic

[Swing] 배치관리자의 삭제

Cloud Travel 2011. 8. 22. 22:16

* 배치관리자를 없에야 하는 경우
 - 컴포넌트를 상대적인 위치가 아닌 절대적 위치에 위치할 때
 - 컴포넌트의 크기를 절대적인 크기를 가지고 싶게 할때
 - 입력에 따라 수시로 컴포넌트의 위치와 크기가 변하는 경우 > 위치와 크기 고정
 - 여러 컴포넌트를 겹치는 효과를 연출할 때

* 컨테이너의 배치관리자 제거
 - container.setLayout(null);

* 절대적 위치와 크기를 가지는 컴포넌트
 - java.awt.Component 클래스 이용
 - method
 ⓐ void setSize(int w,int h); // w*h의 크기를 가지는 컴포넌트 생성
 ⓑ void setLocation(int x, int y); // 컴포넌트의 왼쪽상단 모서리 좌표를 (x,y)로 설정
 ⓒ void  setBounds(int x, int y, int w, int h); // w*h인 크기를 가지는 컴포넌트의 왼쪽상단이 (x,y)로 오게 생성

ex)
import javax.swing.*;
import java.awt.*;

public class exam1 extends JFrame{
 exam1(){
  setTitle("BorderLayout Practice");
  setSize(300,400);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  Container cp = getContentPane();
  cp.setLayout(null);  // 배치 관리자 삭제
  JButton bt1 = new JButton("TEST1"); // 버튼 생성
  JButton bt2 = new JButton("TEST2");
  bt1.setSize(80,50); // 버튼 크기 80x50
  bt1.setLocation(20,20); // 왼쪽 모서리 위치를 (20,20)으로 위치
  
  bt2.setBounds(100,100,90,70); // 크기가 90*70이며 왼쪽 모서리 위치가 (100,100)
  
  cp.add(bt1);
  cp.add(bt2);// 버튼을 컴테이너에 부착!!
  
  setVisible(true);
 }
 public static void main(String[] args){
  exam1 A = new exam1();
 }
}