2011년8월9일_JAVA_swing툴킷(?)을 이용한 윈도우프로그래밍연습과 버튼클릭이벤트처리, 선생님의 윈도우 class 코딩스타일(window클래스를 만들어 생성자에서 window속성을 초기화하고, 멤버메소드로 이벤트처리), JAVA메뉴얼 JDKTM 6 Documentation에 수록된 swing튜토리얼들
시간 으뉴뉴
참조(Reference) |
1: package kr.ac.busanit.window;
2:
3: import java.awt.BorderLayout;
4: import java.awt.Container;
5:
6: import javax.swing.JButton;
7: import javax.swing.JFrame;
8: import javax.swing.JLabel;
9: import javax.swing.SwingConstants;
10:
11: public class SwingTest {
12:
13: /**
14: * @param args
15: */
16: public static void main(String[] args) {
17: // TODO Auto-generated method stub
18: //선생님 소스
19: JFrame frame = new JFrame("레이아웃 연습");
20: JButton[] btn = new JButton[4];
21: btn[0] = new JButton("Button01 NORTH");
22: btn[1] = new JButton("Button02 EAST");
23: btn[2] = new JButton("Button03 SOUTH");
24: btn[3] = new JButton("Button04 WEST");
25: JLabel label = new JLabel("안녕하세요.", SwingConstants.CENTER);
26:
27: Container contentPane = frame.getContentPane();
28: contentPane.add(label);
29: contentPane.add(btn[0], BorderLayout.NORTH);
30: contentPane.add(btn[1], BorderLayout.EAST);
31: contentPane.add(btn[2], BorderLayout.SOUTH);
32: contentPane.add(btn[3], BorderLayout.WEST);
33:
34: /*
35: JButton button1 = new JButton("Button01 NORTH");
36: JButton button2 = new JButton("Button02 EAST");
37: JButton button3 = new JButton("Button03 SOUTH");
38: JButton button4 = new JButton("Button04 WEST");
39: JLabel label = new JLabel("안녕하세요.", SwingConstants.CENTER);
40:
41: frame.setLayout(new BorderLayout());
42: Container contentPane = frame.getContentPane();
43: contentPane.add(label);
44: contentPane.add(button1, BorderLayout.NORTH);
45: contentPane.add(button2, BorderLayout.EAST);
46: contentPane.add(button3, BorderLayout.SOUTH);
47: contentPane.add(button4, BorderLayout.WEST);
48: */
49: frame.setSize(600,600);
50: frame.setVisible(true);
51: frame.setLocation(200,200);
52: frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
53: }
54:
55: }
1: //WindowExample2.java
2: package kr.ac.busanit.window;
3:
4: import java.awt.BorderLayout;
5: import java.awt.Container;
6: import java.awt.Dimension;
7: import java.awt.event.ActionListener;
8:
9: import javax.swing.JButton;
10: import javax.swing.JFrame;
11: import javax.swing.JLabel;
12: import javax.swing.JTextField;
13:
14: public class WindowExample2 {
15:
16: /**
17: * @param args
18: */
19: public static void main(String[] args) {
20: // TODO Auto-generated method stub
21: JFrame frame = new JFrame("Hello Program");
22: frame.setPreferredSize(new Dimension(200, 70));
23: frame.setLocation(500, 400);
24: Container contentPane = frame.getContentPane();
25: JTextField text = new JTextField();
26: JButton button = new JButton("확인");
27: JLabel label = new JLabel("Hello");
28: contentPane.add(text, BorderLayout.CENTER);
29: contentPane.add(button, BorderLayout.EAST);
30: contentPane.add(label, BorderLayout.SOUTH);
31:
32: ActionListener listener =
33: new ConfirmButtonActionListener(text, label);
34: button.addActionListener(listener);
35:
36:
37: frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
38: frame.pack();
39: frame.setVisible(true);
40:
41: }
42:
43: }
1: //ConfirmButtonActionListener.java
2: package kr.ac.busanit.window;
3: import java.awt.event.ActionEvent;
4: import java.awt.event.ActionListener;
5: import javax.swing.*;
6: public class ConfirmButtonActionListener implements ActionListener {
7: private JTextField text;
8: private JLabel label;
9:
10: ConfirmButtonActionListener(JTextField text, JLabel label) {
11: this.text = text;
12: this.label = label;
13: }
14:
15: @Override
16: public void actionPerformed(ActionEvent arg0) {
17: String name = text.getText();
18: label.setText("Hello, " + name);
19: }
20: }
<실행결과>
[스샷] 최초실행 [스샷] “하이”입력 후 [스샷] 확인버튼클릭 [스샷] 방가방가입력 후 버튼클릭
● SwingTest3.java
1: //SwingTest3.java
2: //선생님스타일
3: package kr.ac.busanit.swing;
4: import java.awt.BorderLayout;
5: import java.awt.Container;
6: import java.awt.event.ActionEvent;
7: import java.awt.event.ActionListener;
8:
9: import javax.swing.JButton;
10: import javax.swing.JFrame;
11: import javax.swing.JLabel;
12:
13: class MyWindow extends JFrame implements ActionListener {
14:
15: private JLabel label;
16: private JButton button;
17: Container contentPane;
18:
19: MyWindow() {
20: label = new JLabel("안녕하세요");
21: button = new JButton("OK");
22:
23: contentPane = this.getContentPane();
24: contentPane.add(label, BorderLayout.CENTER);
25: contentPane.add(button, BorderLayout.SOUTH);
26:
27: this.setTitle("타이틀");
28: this.setSize(300, 300);
29: this.setVisible(true);
30: this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
31: }
32:
33: @Override
34: public void actionPerformed(ActionEvent e) {
35: // TODO Auto-generated method stub
36: label.setText("방가방가");
37: }
38:
39:
40: }
41: public class SwingTest3 {
42:
43: /**
44: * @param args
45: */
46: public static void main(String[] args) {
47: // TODO Auto-generated method stub
48: new MyWindow();
49: new MyWindow();
50: }
51:
52: }
<실행결과>
OK버튼을 클릭해도 “안녕하세요”라 적힌 라벨이 “방가방가”로 바뀌지 않는다.
그 원인을 찾아 보았으나 못 찾았다. ㅠㅠ
● JDKTM 6 Documentation
Swing을 클릭…
The Swing Tutorial클릭...
Getting Started with Swing클릭...
Compiling and Running Swing Programs클릭...
프로그래밍절차에 대해 설명하고 있다.. 아래로 스크롤…
뭔지 잘 모르겠지만 섭씨온도를 화씨온도로 바꾸는 프로그램같다.
Launch클릭..
프로그램을 다운받고(?) 실행한다...
오른쪽과 같이 귀여운 온도변환기가 뜨고…
위에 있는 텍스트박스에 섭씨온도값을 넣고 아래의 변환버튼을 클릭하니 오른쪽에 라벨의 텍스트가 변환된 화씨온도값을 보여준다.
잘 만들었다!
여러가지 있으니 구경할 것...
그런데 Next를 해서 제작과정을 보니...텍스트코딩(?)이 아니라 비주얼스튜디오처럼 아기자기한 배치법을 쓰고 있다. –_-;
'내장형하드웨어 > 일일보고서' 카테고리의 다른 글
2011년8월22일_예비군훈련... (0) | 2011.08.24 |
---|---|
2011년8월10일_JAVA_상속과 인터페이스, 슈퍼클래스생성자호출문super, 레퍼클래스 (0) | 2011.08.11 |
2011년8월8일_비주얼한 JAVA 프로그래밍(swing) (0) | 2011.08.09 |
2011년7월29일_JAVA 상속, 생성자, 오버로딩, 오버라이딩 예제와 OOP의 장점 (0) | 2011.08.09 |
2011년7월28일_JAVA class_상속-클래스 멤버(속성, 메소드)들을 자식클래스에게 물려주어 공통된 부분을 제외한 나머지만 추가하여 코드의 재활용을 쉽게 하자. (0) | 2011.07.29 |