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 |