2011년8월9일_JAVA_swing툴킷(?)을 이용한 윈도우프로그래밍연습과 버튼클릭이벤트처리, 선생님의 윈도우 class 코딩스타일(window클래스를 만들어 생성자에서 window속성을 초기화하고, 멤버메소드로 이벤트처리), JAVA메뉴얼 JDKTM 6 Documentation에 수록된 swing튜토리얼들





시간 으뉴뉴

 



참조(Reference)



DSCN3820 DSCN3821 DSCN3822 DSCN3823 DSCN3824




● SwingTest.java

   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: }


<실행결과>

image



● WindowExample2 프로젝트

   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: }


<실행결과>

imageimageimageimage 
[스샷] 최초실행                    [스샷] “하이”입력 후               [스샷] 확인버튼클릭                [스샷] 방가방가입력 후 버튼클릭




● 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: }


<실행결과>

image

OK버튼을 클릭해도 “안녕하세요”라 적힌 라벨이 “방가방가”로 바뀌지 않는다.
그 원인을 찾아 보았으나 못 찾았다. ㅠㅠ





● JDKTM 6 Documentation


image 


Swing을 클릭…



image

The Swing Tutorial클릭...



image

Getting Started with Swing클릭...


image

Example Index클릭...


image

Compiling and Running Swing Programs클릭...



image

프로그래밍절차에 대해 설명하고 있다.. 아래로 스크롤…



image

Next클릭...


image

본격적인 레슨에 들어가는 건가? 아래로 스크롤...



image

뭔지 잘 모르겠지만 섭씨온도를 화씨온도로 바꾸는 프로그램같다.
Launch클릭..


image image 

프로그램을 다운받고(?) 실행한다...
오른쪽과 같이 귀여운 온도변환기가 뜨고…


imageimage

위에 있는 텍스트박스에 섭씨온도값을 넣고 아래의 변환버튼을 클릭하니 오른쪽에 라벨의 텍스트가 변환된 화씨온도값을 보여준다.
잘 만들었다!

여러가지 있으니 구경할 것...
그런데 Next를 해서 제작과정을 보니...텍스트코딩(?)이 아니라 비주얼스튜디오처럼 아기자기한 배치법을 쓰고 있다. –_-;