반응형
SMALL

JCheckBox는 선택과 비선택의 두가지 가지는 체크박스 컴포넌트입니다. JCheckBox 사용하기 위해서는 JToggleButton을 상속받아 선택/비선택 오가는 토글버튼입니다. 


CheckBox 메소드 사용입니다.



JCheckBox 컴포넌트 다양한 컴포넌트를 생성하여 메소드 할수 있습니다.


JCheckBox(Icon image) : image을 가진 체크박스 생성

JCheckBox(Icon image, boolean selcted) :

image를 가진 체크박스 그리고 selected가 true이면 상태표시

JCheckBox(String text): 문자열 가진 체크박스

JCheckBox(String text, boolean selected):

text문자열과 selected의 상태가 true면 초기화표시


JCheckBox[] fruitshoue = new JCheckBox[3];  

체크박스를 배열[3]로 생성하였습니다.

for(int i=0 ; i<fruitshouse.length; i)  : fruitshouse 길이 만큼 i를 반복한다는 뜻입니다. 그러면 fruitshouse 길이는 3이겠지요. 3번 반복합니다.

fruitshouse[i] = new JCheckBox(fruits[i]);  fruitshouse 배열 [0]부터 [2]까지 

체크박스를 생성합니다.

fruitshouse[i].setBorderPainted(true); 체크박스 외각선을 보여준다는 설정입니다.

contPane.add(fruitshouse[i]); fruitshouse[0~2]배열을 contPane 붙여넣겠다는 뜻입니다.

fruitshouse[i].addItemListener(new FruitItem()); 체크박스에 Item리스너 등록


class FruitItem implements ItemListener{};  체크박스가 선택되면 Item이 호출하는 이벤트 메소드 입니다.

e.getStateChange()Item이 이벤트 발생한 체크박스의 현재 상태를 리터하며 선택 상태인지를 판단하기 위한 ItemEvent,Selected 상수와 비교합니다.




반응형
LIST
반응형
SMALL

더블클릭할 때마다 컨텐트팬의 배경색이 바뀌는 코딩을 작성해 봅시다.  random() 메소드를 이용할겁니다. 그리고 임의의 색을 자동생성하기 위해서는 필요한 코딩이 무었을까요? 


int r=(int)(Math.random()*256);

int g=(int)(Math.random() *256);

int b =(int)(Math.random()*256);

Color c= new Color(r,g,b);


더블 클릭할때마다 변경색이 바뀝니다.



r,g,b는 색상을 구성하는 변수입니다. 그리고 (0~255) 사이의 숫자 값을 넣습니다.

램던한 색을 담기 위해서는 Math.random()을 호출하고 이 값을 int 형으로 형 변환됩니다.


클래스 ClickAndDouble  만듭니다. 그리고 extends JFrame을 상속받습니다.

JPanel contentPane = new JPanel();  팬널을 생성합니다.

setContentPane(contentPane); 생성하여 담습니다.

contentPane.addMouseListener(new MyMouseListener()); contentPane패널에서

addMouseListener 붙입니다. 그리고  new MyMouseListener();생성합니다.


new MyMouseListener();을 생성하기 전에 class MyMouseListener 만드셔야 빨간줄이 안생김니다. 빨간줄이 생기는게 싫으면 미리 클래스를 만드시며 됩니다.


아래 MyMouseLisner 클래스 작성 코드입니다.

MyMouseListener 클래스를 만든다음 extends MouseAdapter 상속받습니다.

MouseAdapter상속받은 이유는 public void mouseClicked(MouseEvent e) 코딩을

작성하기 위해서 입니다.

if(e.getClickCount() ==2) 만약 더블클릭인가 확인하는 를 코딩입니다.

반응형
LIST
반응형
SMALL

MouseListener메소드는 마우스가 작동할때마 Event가 발생합니다. MouseListener를 추상메소드를 상속받을시 implements 기능을 사용하여야 하며, Override를 해줘야 하는것도 아실겁니다. 이번에 MouseListener 추상클래스 메소드 중에서 Mousepressed()기능만 사용하고 싶으면 MouseAdapter()이용하시면 편할거니다.


이번에 MouseEvent에는 무엇이 있을까요?  mouse를 클릭하면 글자가 따라다니면서 화면에 보여짐니다. 이번에는 MouseListener 기능중에서 mousePressed() 메소드를 사용하겠습니다.

MouseListener클래스를 implements로 상속받고, 사용하지도 않는 method()를 다

Override해였습니다. 그렇게 되면 코딩이 길어지고 복잡해 보입니다.

이 코딩보다는 MouseAdapter 코딩을 사용하겠습니다.

이 override중에서도 mousePressed(EventEvent e)만 사용하고 싶으면, mouseAdapter을 이용하시면 됩니다.


MyEvent 에서 extends로 MouseAdapter{}상속받습니다. 그리고 mouseListener클래스 기능중에서 mousePressed(MouseEvent e) override 하시면 됩니다.

그러며 간편하다는걸 보실수 있습니다.

public class Event extends JFrame{} -> JFrame 상속받았습니다.

JPanel JPan = new JPanel(); JPanel 생성하였습니다.

JLabel JLa; JLabel도 변수로 만들어 놨습니다. 

Event(){ } 이 안에 setContentPane(JPan); contentPane 대신 JPan 변경합니다.

JPan.setLayout(null): 레이아웃은 없습니다.

JPan.addMouseListener(new MyEvent()); 마우스를 클릭할때마다 이벤트를 주고 싶으면 JPan에 붙여넣우 주시면 됩니다. 


반응형
LIST
반응형
SMALL

JAVA 열심히 공부하다보면 Implements 기능을 많이 사용합니다. 즉, 추상클래스를 상속받겠다는 뜻입니다. 그러면 Override 필요 해주셔야 합니다. 그걸  몰라서 클래스 빨간줄 생긴이유를   종종 보실겁니다. 한참 고민하고 찾고 결국에는  override 안해서 입니다. 


MousLis클래스가 MouseListener 상속받겠다고 선언했습니다. 그리고 MousLis에

빨간줄이 생겼습니다. 마우스로 빨간색에 두고 오른쪽을 클릭하면 박스하나 뜹니다.

즉, override 하겠습니까? 라는 뜻입니다. 주저말고 클릭하시면 돕니다.


클릭하니, override자동 생성되었습니다. 그럼 많은 override를 다 코딩하는것이 아니라, 필요한 메소드(Method)만 코딩하여 사용 하시면 됩니다.

mousePressed(MouseEvent e){} 메소드(method)부분을 코딩하였습니다.

마우스를 눌렀을때, int x= e.getX(); int y = e.getY();  x,y자표를 확인하는 코딩입니다. 그리고 ja.setLocation(x,y); ja변수를 전역변수로 놓고 (x,y)좌표를 보여주겠다는 뜻입니다. 이번 코딩은 메소드 오버라이딩(method override) 자동생성기능을 알아봤습니다.

반응형
LIST
반응형
SMALL

Java에서 이벤트 기반 프로그램밍은 Keybord입력, Mouse클릭등 사용자의 액션션에따라 이벤트가 발생합니다. 

● 이벤트 소스 : 이벤트를 발생시킨 GUI컴포넌트이다.

● 이벤트 객체 : 이벤트 발생시 이벤트 종류, 소스 이벤트가 발생한 화면, 

   마우스 버튼 종류, 키으 코드 값등 이벤트 속성 값을 가진 객체이다.

● 이벤트 리스너: 이벤트 처리하는 코드로서 컴포넌트에 등록해야합니다.

● 이벤트분배스레드: 무한 루프를 실행하는 스레이다. 자바가 가상 기계로부터 이벤트의 발생을 통지받으면 이벤트 소스와 이벤트 종류를 결정하고 이벤트 객체를 생성하여 이벤트 리스너를 찾아 호출합니다.


MuouseListener 이벤트로 사용하므로 나온 결과입니다.

위의 실행을 결과를 얻기위해서는 아래와 같이 작성하시면 됩니다.


MouseEV클래스를 만든다음 인터페이스로 MouseListener 추상메소드를 상속받야합니다. @Override 다 구현해주고 필요한 메소드기능을 사용하시면됩니다.


public void mouseClicked(MouseEvent e) {

JButton btn = (JButton)e.getSource(); 마우스가 올라간 버튼의 주소 소스입니다.

btn.setBackground(Color.CYAN);   마우스가 올라간 곳에 배경색을 나타냅니다.

public void mouseExited(MouseEvent e){

JButton btn =(JButton)e.getSource(); 마우스 올라간 버튼의 주소를 선택

btn.setBackground(Color.LIGHT_GRAY);

class Event에서 JButton jb = new JButton(); 생성합니다.

MouseEV 클래스 생성합니다. MouseEv me = new MouseEv();

jb.addMouseListener(me); JButtonMouseListener MouseEV 붙착합니다.

그리고 마지막으로 add(jb) 컴포넌트에 JButton을 부착합니다.

반응형
LIST
반응형
SMALL

Java GUI에서 Layout에 대하여 알아보겠습니다. JFrame을 상속받으면 AWT와 SWing 메소드를 사용할수 있습니다. Layout은 FlowLayout ,BorderLayout, GridLayout 과 layout을 NUll로 표시해서 사용할수 있습니다.


 FlowLayout

  왼쪽부터 순서대로 오른쪽으로 배치하는 기능입니다.

 BorderLayout

  컨테이너의 공간을 위쪽,아래,왼쪽,오른쪽,중앙으로 배치하는 기능입니다.

 GirldLayout

  컨테이너의 공간을 2차 그리드로 나누고, 입력하는 순서대로 우로, 위에서 

  아래로 배치합니다.

 CardLayout

  글자 그래도 카드쌓듯이 컴포넌트를 배치하는 기능이빈다.


→ BorderLayout 메소드와 출력입니다.

《 소 스 설 명》

setTitle("BorderLayout Sample"); 제목을 넣어습니다.

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 윈도우 창을 닫으면 프로그램을 종료하는 메소드입니다.

Container con = getContentPane(); 컨테이너를 불러오는 코드입니다.

con.setLayout(new BorderLayout()); 컨테이너에 BorderLayout을 만들겠다는 코드입니다.

con.add(new JButton("중앙"),BorderLayout.CENTER); 커테이너에 버튼동작을 만들고 그 버튼을 중앙에 베치하게다는 코드입니다.

각각 버튼들을 생성하여 왼쪽,오른쪽, 위,아래로 배치하시면 됩니다.


→ GridLayout 

Container con = getContentPane(); 컨터에너에 불러옵니다.

GridLayout grd = new GridLayout(4,2) 4행2열을 만드는 코드입니다.

grd.setVgap(5); grid사이를 수직 간격으로 5픽셀로 설정합니다.

con.setLayout(grd); 컨터이너에 Gridlayout 부착합니다.

con.add(new JLabel("무슨확과?"): JLabel을 new로 생성합니다. 

con.add(new JTextField("")); JTextField을 new로 생성합니다. 


→ layout을 null

Container con =getContentPane(); 컨터에너를 불러옵니다.

con.setLayout(null); layout을 따로 만들기 않겠다는 코드입니다.

JLabel j = new JLabel("if you love me, press Button? O.k?); Layout 대신

JLabel 기능을  부착해도 됩니다. JLabel 부착후 글자를 넣오 보이도록

코드를 만들었습니다.

J.setLocation(130,50); j 위치를 130,50으로 지정합니다.

j.setSize(200,20); J 200*20으로 크기를 지정합니다.

con.add(j); JLabel 을 컨텐트팬에 부착합니다.

for(int i=i; i<=9; i++){

JButton jb= new JButton(Integer.toString(i)); 버튼을 9개를 생성하고 그 속에

integer.toString(i); 숫자 i이는 1~9까지 를 넣게다는 코드입니다.

jb.setLoation(i*13, i*15); 버튼이 한개씩 생성할때마다 버튼의 위치는 

겹치지 않게 i*13,i*15만큼씩 이동해서 생성됩니다.

jb.setSize(45,45); 버튼의 크기를 설정합니다.

con.add(jb); 생성된 버튼을  컨테이너에 부착합니다.

여기서 중요한건, 버튼을 JLabel에 부착하시면 안됩니다.

 




반응형
LIST
반응형
SMALL

컨텐트팬에만 컴포넌트를 부착할수 있으므로 JFrame객체을 생성하며 자동으로 컨텐트펜을 생성시킬수 있습니다. 


* 코딩

 1. JFrame  jf = new JFrame():  객체를 생성합니다.

 2. Container content = if.getContentPane(); JFrame생성후 Container 만들수 

                                                     있습니다.

즉, JFrame의 생성 당시 붙어 있던 컨텐트팬을 제거하고 새로운 컨텐트팬을 만들어서 붙일수 있다. 

setTitle ("JFrame와 container"); 윈도우 제목명을 넣어줍니다.

setDefaultCloseOperation(JFrame.EXII_ON_CLOSE); 프레임이 닫힐때 프로그램도 함께 종료됩니다.

Container content = getContentPane(); contentPane 을 불러온다.

content.setBackground(Color.Green); 배경색은 그린으로 설정합니다.

content.setLaout(new FlowaLayout());컨텐트팬에 버튼을 부착할때 순서를 정하는 배치관리자 설정입니다.

content.add(new JButton("OK")); 버튼 'ok'로 설정했습니다.

content.add(new JButton("Cancel");버튼 'cancel"로 설정했습니다.

content.add(new JButon("Ignore");버튼을 'Ignore"로 설정했습니다.


setSize(300,300,); 가로세로 300,300으로 화면을 설정했습니다.

setVisible(true); 프레임을 화면에 출력하겠다는 설정입니다. 이것은 '꼭'하셔야합니다.


반응형
LIST
반응형
SMALL

드뎌 java GUI 시작합니다.  그동안 java는 텍스트 출력하는 사용자 인터페이스를 배우는데 지루했습니다.'이히' 이제부터 java언어로 GUI기반의 응용프로그램을 배웁니다. 


GUI란? Graphical User Interface약자입니다. 자바에서는 Swing패키지와 AWT패키지 제공하므로써 프로그램 개발자들에게 다양한 모양의 GUI를 구성할수 있도록 해줍니다.


  ◈ AWT?

java에서 처음 나올때 만든 패키지로 많은 GUI 컴포넌트를 가지고 있습니다. 

즉,Frame,Window,Panel,Dialog,Button,Label,TextField,Checkbox등 이 컴포넌트는 운영체제인os 도움을 받아 출력됩니다. 


  ◈ Swing?

스윙은 AWT기술을 기반으로 작성된 라이브러리로서 자바 언어로 작성됩니다. 운영체제의 도움을 받지 않고 구현되기때문에 항상 동일하게 작동하며 동일한 모양을 만듭니다. 또한 Swing은 awt와 100%호환됩니다.  AWT와 구분하기 위하여 JFrame, 

JWindow, JPanel, JButton, JLable로 표시됩니다.



Swing기반으로 윈도우프레임을 만들어 보겠습니다. JFrame 객체를 생성하여 만드는 방법과 JFrame클래스르 상속받아 만드는 방법입니다.


▷ JFrame객체 생성하여 프레임을 만듭니다. 

JFrame jf = new JFrame();   객체를 직접생성하였습니다.

jf.setTitle("제목이름넣기"); 윈도우 창을 보시면 작은 제목이 넣어습니다.

jf.setSize(300,300);  윈도우 창 크기를 설정하였습니다.

jf.setVisisble(true);  화면을 보여주겠다는 표시입니다. 꼭 true 표시하여야 합니다.


▷ JFrame클래스를 상속받는 방법




이번에는 JFrame클래스를 상속받아 윈도우을 만들었습니다.

public class FileEx extends JFrame   JFrame을 상속받았습니다.

FileEx(){ }  안에는 코드 소스는 동일합니다.

FileEx fe = new FileEx(); 이 부분을 꼭 하셔야 합니다. 


반응형
LIST
반응형
SMALL

입출력 스트림이란? 자바의 입력 스트림은 네트워크,키보등과 같은 이렵장치와 연결도어 있으며, 입력장치로부터 데이터가 프로그램으로 순서대로 흘러간다. 자바의

출력 스트림은 프로그램에 화면이나 프린터등과 같은 출력장치에 순서대로 흘러보낸다. 그리고 스트림으로 통해 흘러가는 기본데이터 단위는 바이트이다.


▶ InputStream/OutputStream : 추상클래스이며,바이트 입출력 처리를 위한 클래스이다.

▶ FileInputStream/FileOutputStream: 파일 입출력을 위한 클래스이며, 파일로부터

바이너리 데이터를 읽거나 파일에 바이너리 데이터를 저장한다.


▶ DateInputStream/DataOutputStream: boolean,char,byte,short,int,long,float,double타입의 값을 바이너리 형태로 입출력한다. 문자열도 바이너리 형태로 입출력한다.


윈도우에있는 System.ini 파일 읽고 화면에 출력하기 프로그램

FileInputStream으로 system.ini 파일과 연결된 바이트 스트림을 생성하여

((c=i.read() !=-1) //파일의 끝을 만나면 -1리턴하여 System.out.print((char)c);

바이트 C를 문자로 변환하여 화면에 출력합니다.

in.close(): 더이상 스트림을 읽을수 없습니다.


※이번에는 FileOutStrem을 이용하여 파일 쓰기 프로그램 생성해봅시다.

FileOutputStream에서 fos.wrtie(n);파일에 결과 값을 바이너리로 저장한다.

fos.close();스트림을 닫는다. fps= new FileInputStream("c:/temp/tile.txt");

이용해서 파일을 다시 입력 스트림으로 연결한다.


InputStreamReader이용하여 MS949문자 집합으로 한글텍스트 파일 읽고 출력하기 프로그램만들어 봅시다.

여기에서 in =new InputStreamReader(fin,"MS949"); ms에서 만든 한글 확장완성형 문자 집합//올바른 문자 집합 지정합니다.


만약 여기서 문자집합을 US-ASCII로 지정하며 어떻게 될까요?

느낌표로 프로그램이 출력됩니다.


이번에는 키보드에서 입력받은 데이터를 c:/temp/file.text 저장하고 메모장

에서 실행 결과를 볼수 있습니다.

실행을 시키 후 I like java입력하고 Enter키 치고 ctrl+z키 입력하면 저장되 것을

메모장에서 보실수 있습니다.


반응형
LIST
반응형
SMALL

  HashMap<K,Y>컬렉션은 key(키)와 value(값)으로 구성되어 있으면 'K'로 사용할 데이터 타입을 'V'는 값으로 사용하여 데이터 타입 매개변수이다. HashMap은 'key'와'값'을 저장하는 자료 구조를 가지고 있다. HashMap에 자료를 입력할시 put()을 이용하고 자료를 출력시에는 get() 메소드를 사용한다.

put(key,value) 메소드는 '키'와 '값'을 받아서 '키'를 기반으로 함수를 실행하여 내 위치를 결정합니다. 그 위치에 따라 '키'와 값이 저장됩니다. '키'를 호출하면 '값'저장된 위치를 알아내고 '값'을 위치를 결정합니다. 어느 위치에 '키'와 '값'이 들어 있는지 사용자는 알수 없으며, 입력된 순서와 상관없이 출력됩니다.


※HashMap <  K ,       > 사용 예제

               key값,  value값 의미합니다.

has.put() 메소드를 사용하여 자료를 입력합니다. 총 4개의 자료를입력합니다.

Set<k>keySet()은 HashMap에 있는 모든 키를 담은 컬렉션 리턴메소드이다.


Set<String>set = has.keySet();  key 문자열을 가진 집한 set컬렉션 리턴

Iterator<String> it = set.iterator(); key 문자열을 순서대로 접근할수 있게 리턴

System.out.println(has.get(a)); 여기소 HashMap접근해서 get(a) a를 꺼내다.

그러면 a는 String a = it.next() 가리키고 it.next()이것은 set 의미하고 set

key를 뜻한다. 즉 key 선택하며 Value값을 얻는다.


HashMap<K,V> scanner 메소드 이용 예제


HashMap<K,V>에서 Scanner 을 이용하여 Love 입력하면 '사랑해' 출력된다.

즉, key 값 Love 입력 하면 value 값이 출력된다.

System.out.println(has.get(eng)); 메소드는 String value=has.get(key);전달되어

호출된다.


※HashMap<K,V> 클래스를 이용하여 사용하기


HashMap<String, Student> ha = new HashMap<String, Student>();

                   → class Student {}호출함합니다.  

입력방법 ha.put("스타병", new Student(1,"010-444-4444")); 입력함

                            → Student 클래스 생성하여 사용함합니다.

반응형
LIST

+ Recent posts