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

입력/출력 -> 우리가 만드는 프로그램이 할당 받을 메모리 외부와 데이터를 주고 받음.

IO (Input/Output) : 자바에서 데이터는 스트림(Stream)을 통해 입출력 됨.


Stream : 순서가 있는 데이터의 연속적인 흐름

바이트(Byte) 기반 스트림 > 문자(character) 기반 스트림


바이트 기반 스트림 

문자 기반 스트림 

 입력 바이트 스트림

(...InputStream)

출력 바이트 스트림

(...OutputStream) 

입력 문자 스트림

(...Reader)

 출력 문자 스트림

(...Writer)


파일의 경로

절대경로 : 최상위 루트로부터의 경로

상대경로 : 현재 내 위치로부터의 경로

정규경로 : 최단거리 절대경로

import java.io.*;

public class FileStreamTest {

public static void main(String[] args) {

FileInputStream in  = null;

FileOutputStream out = null; //사용할 스트림 객체를 참조할 참조변수 선언

try{  //예외처리 프레임 작성   // File타입의 객체/ FileDexcriptor / String타입의 파일정보 중에 하나

out = new FileOutputStream("data.txt");

for(int i = 0; i < 10; i++)

out.write(i);

in = new FileInputStream("data.txt");  //파일의 경로(절대경로, 상대경로, 정규경로)

int c;

while ( (c= in.read()) != -1)

System.out.println(c);

//사용할 스트림 객체를 생성

//문자열로 주려면 내가 목적지로 사용할 파일의 경로를 써주면됨

} //생성자에는 목적지 파일에 대한 정보를 담아야함

catch(IOException e)

{

e.printStackTrace();

}

finally{

try{//스트림은 쓰면 닫아줌

if(out != null)    //try구문에서 객체 생성하다 예외가 나오면 finally 구문에서 참조변수가

out.close(); //null이어서 멤버함수 close를 접근하면 NullPointerException이 발생할 수 있으므로 조건 검사

if(in != null)       

in.close();

} catch(IOException e){

e.printStackTrace();

}

}

}

}


데이터 싱크 스트림 

 데이터 처리 스트림

 데이터를 소스에서 읽거나 

목적지에 기록

들어오는 데이터를 가공하여 내보낸다


buffer는 바가지, 바가지의 크기는 기본 8192, 바가지가 꽉 찼는데 새로운 데이터가 들어오면 바가지에 있는 데이터를 처리

flush() : 현재 바가지에 있는 데이터를 강제로 처리하기


직렬화(serialization) : 객체가 가진 데이터들을 순차적인 데이터로 변환하는것




AWT - > 운영체제로부터 그래픽 자원을 빌려와 GUI 구현

Swing -> 자바 안에 독립적인 UI 컴포넌트 자원을 내포


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

Day22 TCP  (0) 2016.04.12
Day21 입출력 / 네트워크 프로그래밍  (0) 2016.04.11
Day19 스레드  (0) 2016.04.07
Day18 예외처리  (0) 2016.04.06
Day17 제네릭과 컬렉션  (0) 2016.04.05

+ Recent posts