JAVA - 윈도우 생성 2번째
⇒ 윈도우를 생성하는 기본 예제
package kr.ac.busanit.window;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
public class MyWindow {
public static void main(String[] args) {
JFrame frame = new JFrame("Title"); // frame에 Title이라는 문자를 보여준다.
JLabel label = new JLabel("반갑습니다.", SwingConstants.CENTER);
// SwingConstants.'위치' 로 라벨에 들어가는 문자열의 위치를 지정할 수 있다.
Container contentPane =frame.getContentPane();
contentPane.add(label);
//frame.add()
frame.pack();
frame.setLocation(100,100); // 화면(모니터)상의 어느지점에 창이 생기는지 지정
frame.setSize(300,300);
//frame.setPreferredSize(new Dimension(300,200)); // 프레임의 크기를 바꾼다.
frame.setVisible(true); // 윈도우가 화면에 보이도록 한다.
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); // x(종료)버튼 활성화
}
}
→ 출력결과
⇒ 윈도우의 기본적인 구성요소
타이틀 바(title bar) |
라벨(label) |
프레임(frame) |
content pane |
⇒ 컴포넌트(component)
프레임, 타이틀 바, content pane, 라벨 등의 구성요소를 통틀어 이르는 용어
⇒ 컴포턴트들이 겹쳐진 층으로 구성되는 윈도우
프레임 |
Hello, Java |
타이틀 바 |
content pane |
라벨 |
⇒ 프레임 만드는 방법
※ new는 C의 malloc과 유사하다.
→ 초창기 JAVA 윈도우 프로그래밍에서는 awt를 사용했으나 요즘은 swing을 사용한다.
→ swing은 특히 안드로이드에서 많이 사용된다.
→ 왼쪽의 JFrame frame은 변수 선언이며 오른쪽의 new JFrame(); 은 메모리를 할당한다.
→ new는 객체의 생성
→ 즉, 왼쪽항의 JFrame은 type이 되며 frame은 이름이 되고 이것은 오른쪽 항의 new 명령에 의해 메모리에 생성된
JFrame();의 주소를 저장하게 된다.
⇒ 타이틀이 표시된 프레임 만드는 방법
⇒ 라벨 만드는 방법
⇒ 프레임에 종속된 content pane을 가져오는 방법
⇒ content pane 위에 라벨을 올려놓는 방법
⇒ 프레임을 적절한 크기로 조정하는 방법
⇒ 프레임을 디스플레이하는 방법
⇒ 윈도우의 위치를 지정하는 방법
⇒ 프레임의 크기를 바꾸는 방법
⇒ 라벨의 위치를 지정하는 방법
- 윈도우 프로그램의 작성 방법
∙ 텍스트 상자와 버튼
텍스트 상자 |
버튼 |
라벨 |
⇒ 텍스트 상자를 만드는 방법
⇒ 버튼을 만드는 방법
⇒ 여러 개의 컴포넌트를 content pane 위에 올려놓는 방법 – 잘못된 예
이렇게 하면 마지막에 추가된 라벨만 보이게 됩니다 |
contentPane.add(text); contentPane.add(button); contentPane.add(label); |
⇒ 예제
더보기
package kr.ac.busanit.window;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
public class MyWindow {
public static void main(String[] args) {
JFrame frame = new JFrame("Title"); // frame에 Title이라는 문자를 보여준다.
JLabel label = new JLabel("반갑습니다.", SwingConstants.CENTER);
// SwingConstants.'위치' 로 라벨에 들어가는 문자열의 위치를 지정할 수 있다.
JTextField textfield = new JTextField(12); // 숫자는 입력가능한 크기를 의미
JButton button = new JButton("OK"); // OK라는 문자열의 button 생성
frame.setLayout(new FlowLayout());
Container contentPane =frame.getContentPane();
contentPane.add(textfield, BorderLayout.CENTER);
contentPane.add(button, BorderLayout.EAST);
contentPane.add(label, BorderLayout.SOUTH);
//frame.add()
frame.pack();
frame.setLocation(100,100); // 화면(모니터)상의 어느지점에 창이 생기는지 지정
frame.setSize(300,100);
frame.setVisible(true); // 윈도우가 화면에 보이도록 한다.
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); // x(종료)버튼 활성화
}
}
→ 출력결과
⇒ content pane의 기본 레이아웃 – border layout
⇒ 여러 개의 컴포넌트를 content pane 위에 올려놓는 방법
contentPane.add(text, BorderLayout.CENTER); contentPane.add(button, BorderLayout.EAST); contentPane.add(label, BorderLayout.SOUTH); |
이렇게 배치됩니다 |
|
⇒ Border layout을 사용한 예제
더보기
package kr.ac.busanit.window;
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
public class SwingTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame frame = new JFrame("Title");
JLabel label = new JLabel("안녕하세요", SwingConstants.CENTER);
JButton[] button = new JButton[4]; // 배열 사용
button[0] = new JButton("Button01 NORTH");
button[1] = new JButton("Button02 EAST");
button[2] = new JButton("Button03 SOUTH");
button[3] = new JButton("Button04 WEST");
/* 배열 사용하지 않으면
JButton button1 = new JButton("Button01 NORTH");
JButton button2 = new JButton("Button02 EAST");
JButton button3 = new JButton("Button03 SOUTH");
JButton button4 = new JButton("Button04 WEST");
*/
Container contentPane =frame.getContentPane();
contentPane.add(button[0], BorderLayout.NORTH);
contentPane.add(button[1], BorderLayout.EAST);
contentPane.add(button[2], BorderLayout.SOUTH);
contentPane.add(button[3], BorderLayout.WEST);
/* 배열 사용하지 않으면
contentPane.add(button1, BorderLayout.NORTH);
contentPane.add(button2, BorderLayout.EAST);
contentPane.add(button3, BorderLayout.SOUTH);
contentPane.add(button4, BorderLayout.WEST);
*/
contentPane.add(label, BorderLayout.CENTER);
frame.pack();
frame.setLocation(100,100); // 화면(모니터)상의 어느지점에 창이 생기는지 지정
frame.setSize(600,500);
frame.setVisible(true); // 윈도우가 화면에 보이도록 한다.
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); // x(종료)버튼 활성화
}
}
→ 출력결과
간단하게 윈도우 제작하는 방법 -예제-
더보기
package kr.ac.busanit.window;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
class MyWindow extends JFrame{
private JLabel label;
private JButton button;
Container contentPane;
MyWindow(){
label = new JLabel("안녕하세요");
button = new JButton("OK");
contentPane = this.getContentPane();
contentPane.add(label, BorderLayout.CENTER);
contentPane.add(label, BorderLayout.SOUTH);
this.setTitle("타이틀");
this.setSize(300,300);
this.setVisible(true);
}
}
public class SwingTest4 {
public static void main(String[] args) {
new MyWindow();
}
}
∙ 버튼 이벤트의 처리 방법
⇒ 텍스트 상자의 텍스트를 가져오는 방법
⇒ 라벨에 텍스트를 표시하는 방법
⇒ 버튼을 눌렀을 때 해야할 일을 기술하는 방법
⇒ 버튼을 눌렀을 때 actionPerformed 메소드가 호출되도록 만드는 방법
→ 우리는 ActionListner 등을 이용해야 JVM에 접근 가능하다.
→ 위의 예제는 button을 눌렀을 때 이벤트가 발생한다. 그리고 그 내용은 변수 listener에 들어간다.(함수 포인터와 유사.)
→ 이벤트 처리에 관련해서 좀더 자세한 내용은 내일 수업시간에 진행한다.
'내장형 하드웨어 > JAVA' 카테고리의 다른 글
JAVA - String 클래스의 메소드, 배열 (0) | 2011.12.14 |
---|---|
JAVA - 인터프리터, (0) | 2011.12.05 |
JAVA - 배열 (0) | 2011.07.26 |
JAVA - 생성자 (0) | 2011.07.25 |
JAVA - 기본 문제풀이(짝수, 구구단), 클래스, 메소드 (0) | 2011.07.22 |