GUI

1세대 : AWT(Abatract Windows Toolkit) -> OS로부터 그래픽 자원을 빌려 씀

2세대 : Swing -> 자바 내부적으로 그래픽 자원 지원

3세대 : FX 



패널(panel)은 컴포넌트들을 가질 수 있는 컨테이너

레이블은 편집이 불가능한 텍스트



이벤트 처리 과정

1. 이벤트가 발생할 컴포넌트를 생성

2. 원하는 이벤트를 처리하는 리스터 인터페이스를 구현

3. 1번 컴포넌트에 2번객체를 연결





import java.awt.*;

import javax.swing.*;


class MyFrame extends JFrame {

private JButton btn;

private JLabel label;   //컴포넌트들을 Frame클래스의 멤버변수로 선언

private JTextField tF;

public MyFrame(){

btn = new JButton();

label = new JLabel("달러값 입력");

btn = new JButton();

btn = new JButton();

btn.setText("환전");

tF = new JTextField(5);

this.add(tF);

this.add(btn);

this.add(label);


btn.addActionListener(new MyListener());

//이벤트 처리 구현 클래스의 객체를 컴포넌트에 연결

setTitle("MyFrame");

setSize(300,200);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLayout(new FlowLayout());

setVisible(true);

}

class MyListener implements ActionListener{

public void actionPerformed(ActionEvent e){

// System.out.println("그만눌러");

try{

String money =  tF.getText();

int num = Integer.parseInt(money);

// num++;

int result = num*1142;

String result2 = String.valueOf(result+"원");

label.setText(result2);

}catch(NumberFormatException e1){

// e1.printStackTrace();    }

// ((JButton) e.getSource()).setText("눌렸다");

} //리스너 구현클래스가 프레임 클래스의 내부로 들어가면 프레임의 멤버변수인 

}  // 컴포넌트들에 접근이 자유롭다.

}

public class MyFrameTest {

public static void main(String[] args) {

MyFrame f = new MyFrame();

}

}



이벤트 처리기의 위치 

1) 별도의 클래스로 이벤트 처리기를 작성

2) 내부클래스로 이벤트 처리기를 작성

3) 프레임 클래스가 이벤트 처리기도 함께 구현

' IOT 기반 응용 SW과정 > Java, Eclipse ' 카테고리의 다른 글

Day27 MySQL  (0) 2016.04.22
Day 26 데이터베이스 프로그래밍  (0) 2016.04.21
Day23 TCP  (0) 2016.04.18
Day22 TCP  (0) 2016.04.12
Day21 입출력 / 네트워크 프로그래밍  (0) 2016.04.11

+ Recent posts