- AWT Vs. Swing : AWT와 Swing은 모두 GUI 프로그래밍을 말함.
: AWT(Abstract Window Toolkit)는 윈도우에서 GUI형태로 나타나는 것을 말함. 즉, AWT는 각 OS마다 다르게 나타남.
: 반면 Swing은 모든 플랫폼에서 같은 모양을 나타냄. AWT의 Button은 Swing에서 JButton으로 나타냄. 이러한 차이 빼고는 없으므로 Swing을 많이 사용함.
- Component : Button, Checkbox, Radio button, Text field, Text area 등. (Layout을 이용해서 붙임)
- Container : 여러개의 Component를 부착할 수 있게 해주는 것. (Frame - Window 객체를 상속받아서 최소화, 최대화, 닫기버튼을 가짐. Frame에 Component를 붙일 수 있음.)
: Component는 거의 Frame을 쓴다. (Frame을 쓰지 않으면 최소화, 최대화, 닫기 구현이 번거로움)
- Applet : 콘솔에서 돌리는것이 아니고, init 메소드를 사용.
- Frame
: Window의 subclass
: title과 resizing corner를 갖는다.
: Container 를 상속받아서 add() 를 이용해 component를 붙인다.
: 생성자에 인수로 주어지는 String이 title 문자열로 보여진다.
: BorderLayout(E. W, S, N, C - 동서남북 중간 5개 위치에 붙일 수 있음)을 Default Layout으로 갖는다.
(Pannel을 이용하면 Layout에 Component를 여러개 붙인 것처럼 보이게 할 수 있다.)
setLayout() 을 이용해 Layout을 설정할수 있다.
- Frame을 만드는 두 가지 방법
1. extends Frame : 내가 만든 class가 Frame이 된다.
2. 내가 만든 class안에서 Frame 객체 생성
- Frame을 만들 때 반드시 해줘야 하는 것들
① setSize( , ); 또는 pack()
② setVisible(true); // setVisible(false)가 디폴트값이므로 (화면에 보여지게 해줌)
- JframeTest.java 소스
import javax.swing.JFrame;
public class JframeTest extends JFrame {
public JframeTest(){
// 닫기 버튼을 누르면 메모리에서 해제
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400, 300);
this.setVisible(true);
}
public static void main(String[] args) {
new JframeTest();
}
}
- 결과
- JframeTest2.java 소스
import javax.swing.JFrame;
import javax.swing.JButton;
public class JframeTest2 extends JFrame {
JButton northbutton, southbutton, eastbutton, westbutton, centerbutton;
public JframeTest2(){
// 닫기 버튼을 누르면 메모리에서 해제
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 객체 생성
northbutton = new JButton("북쪽");
southbutton = new JButton("남쪽");
eastbutton = new JButton("동쪽");
westbutton = new JButton("서쪽");
centerbutton = new JButton("중앙");
// 컨테이너에 컴포넌트들을 부착
this.add("North", northbutton);
this.add("South", southbutton);
this.add("East", eastbutton);
this.add("West", westbutton);
this.add(centerbutton); // 위치를 작성하지 않으면 기본으로 Center에 들어감
this.setSize(400, 300);
this.setVisible(true);
}
public static void main(String[] args) {
new JframeTest2();
}
}
- 결과