반응형
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

Visaul C++ 과제중에서 차일드 윈도우에 버튼을 만들어 [확인]누르면 3개의버튼을

추가하여 만드는 프로그램을 진행하도록 하겠습니다.


▶ 알 고 리 즘 ◀

1.우선 메인윈도우을 생성합니다.

2. 차일드 윈도우를 만듭니다. 

3. 차일드 콜백함수에 버튼을 만듭니다.

4. 버튼을  클릭하며 getMessage에서 MB_YESNOCANCEL로 지정합니다.

여기에서 getMessage을 변수롤 지정합니다.(이유는! 호출하였을겨우 출력값을

받기위해서 입니다.) 변수지정은 차일드 콜백함수에 안에서 지정합니다.

5.MB_YESNOCANCEL 메소드에 자동생성된 아이디가 있습니다.

  IDYES,IDNO,IDCANCEL


차일드윈도우에 버튼생성:

LRESULT CALLBACK ChildWndproc -> 이곳에다 button을 만들시면됩니다


위의 메소드을 작성하면 아래와 같은 프로그램이 완성됩니다. 

차일드 윈도우에서 [확인]버튼을 클릭하면[예][아니요][취소]윈도우 창이 뜹니다.

그 세중에 [예]를 누르면 [확인]윈도우 창이 뜹니다. 


각의 메소드 기능 프로그램을 살펴보겠습니다.


answer =MessageBox(hWnd,L"강의 만족합니까?",L"예",MB_YESNOCANCEL);



세개의 질의 윈도우 창이 뜹니다. 세개의 질문중에 하나를 선택하면

새로운 윈도우 창이 뜹니다.

if(answer ==IDYES)

{

  MessageBox(hWnd,L"[예]버튼을 클릭했습니다.",L"확인",MB_OK);

}

작은 윈도우 창이 뜨는것을 확인할수 있습니다.

이번 과제물은 차일드윈도우에서 버튼을 생성하고 그 버튼에 프로그램 소스를

생성하여 출력하는 과제물이었습니다.

반응형
LIST
반응형
SMALL

Visaul2017은 win32콘솔기능은 visaul2012다르게  따로 나타나지 않게 해놨습니다. 업데이트 될때마다 유용하게 사용하던 기능이 안보이니 난감할때가 종종 있네요. 그럼 이번에는 visaul2017 C++사용하는 분들중에 Win32콘솔로 프로그램하실 분들이 있을것 같아서 올려봅니다.


win32콘솔로 프로젝트 만들기 입니다.


1.  파일 → 새로만들기 →프로젝트 생성합니다.

2. windows 데스트톱 → windows 데스크톱 마법사 선택 → 확인 

   이름(N): 각자 설정하시면 됩니다. 


3. 아래 그림보시면 체크된 부분에 따라 선택하시면 됩니다.

4.솔루션 탐색기→ 소스파일(선택후 마우스 오른쪽클릭) → 추가 → 새항목 선택

혹시, 여기서 솔루션 탐색기가 안보인다면 <보기>가셔서 <솔루션 탐색기>클릭하시면 됩니다.

4. 


5. visaul C++ → C++파일  →이름(N):작성 → 추가클릭

Win32콘솔로 프로젝트를 진행하시면됩니다.

6. <LNK2019 오류원인> 열심히 소스작성하여 완성했고 오타도 없는데 LNK2019오류가 난다면 프로제트 진행시 꼭 설정해야 합니다LNK2019 오류원인


7. <LNK2019오류해결>하위시스템에서 SUBSYSTEM:WINDOWS 선택하여야만 에러가 발생하지 않습니다. LNK2019오류해결

8. visaul2017에서 win32콘솔로 윈도우 만들기 완성되었습니다.

프로젝트 완성 잘 마무리하시기 바랍니다.


반응형
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

정신없이 visual studio2017 설치하다가 MFC 설치를 놓쳐서 다시 설치하고 또 한가지 노친부분이 있어서 추가설치 합니다. 도움말 뷰을 설치하지 않으면 교과서나 참고서에 나온 클래스 뷰를 볼수가 없었습니다. 한참 찾아보니, 도움말 뷰를 설치하면

편안하게 클래스 뷰를 라이브러리 함수를 이용할수 있습니다. 


만약 MFC설치후 SDI할때 MI 파일생성 후 클래스 뷰가 안보인다면!

※ 도구 ->도구 및 기능 가져오기(추가 콘텐츠 추가 및 제거할때)


※ visaul studio2017설치 화면으로 갑니다. 워크로드 ->개별구성요서 클릭

※ 개별 구성 요소에서 쭉 내려가면 코드도구->도움말 뷰어를 체크하시고

   수정(설치) 클릭

※ visual Studio2017 설치 중으로 듭니다.

※설치가 완료 되고 메뉴->도움말->도움말 기본 설정 지정->도움말 뷰에서 시작

  클릭합니다.

※ 도움말 뷰어 ->콘텐츠 관리 클릭 하면 visual studio 2015 Visaul C++ 와

visaul studio2015 viual C++ 영어, 두군데를 추가로 선택하시고 업데이트 클릭

하시면 됩니다.

※ 아래 화면에 내용을 읽고 '예'를 클릭하시면 됩니다.


※클래스 뷰 생성하기

  메뉴에서 ->보기 -> 클래스 뷰(정상적으로 다운로드 되면 보입니다)->클릭

  하시면 우측 하다 보시면 클래스 뷰가 생성되었습니다.



클래스뷰로 함수호출이 쉽게 만들수 있기때문에, visual c++ 이용하는 MFC 사용하는 꼭 필요한 기능입니다. MFC 라이브러리 함수를  쉽게 접근하고 이용할수 있는클래스 뷰입니다


반응형
LIST
반응형
SMALL

C언어,java언어, VisualC++까지 엉겁결에 배우고 있어서 앞으로 HTML도 있는데. 그냥 정신이 없네요. 이번에 과목을 잘못 선택한것 같아요.프로그래밍 언어들이 원리가 비슷하기 때문에 VisualC++ 익숙해 지면 그냥 그냥 따라갈수 있을것 같아요.  프로그래밍을 배우다 보면 초보자에게 제일 어려운 건 ! 딱 하나.오류찾기 입니다. 오류해결만 하루종일 걸려서 여기까지 왔네요. '이히'  visualC++에서 클래스 추가를 해보겠습니다. 


※프로젝트 ->클래스 추가->VisualC++(c++)->NFC->MFC클래스->

   클래스 이름(CChildWind), 기본클래스(CWnd)선택후 다음 누르시면 됩니다.


CChildWind.h 프로그램이 기본적으로 생성됩니다.

CChildWind.h 들어가서 빨강색으로 칠한 부분은  직접입력 코딩 하시면 됩니다.



우선 언어에 익숙치 않으니, 코딩을 찾아서 입력하는것도 버거웠네요.

다행이도 필요한 정보를 주는 블로그를 찾아서 그 소스 참조 하면서 

코딩을 해봤습니다.


그담 해야할 일은 CChildWnd.cpp 가셔서 코딩을 입력하셔야 합니다.



그리고 SDIView.h 가셔서 SDIView 클새스 맴버 함수로 OnCreate()추가 되어 있다고 적혀 있는데 없을 경우 직접 입력하시면 됩니다. 

맨 아래쪽 빨강줄 보시면 afx_msg int OnCreate()적혀있는 보실수 있습니다.

직접 입력하여 추가하시면됩니다.

그리고 SDIView.cpp 가져서 줄친부분에 추가 코딩을 입력하시면 됩니다.

윈도우 SDIView.h에 WM_CREATE메시지가 전달될 때 메시지 핸들러인 CSDIView::

OnCreate()함수가 호출되어서 차일드 윈도우를 생성합니다. 차일드 윈도우를 

생성하는 함수는 CChildWnd::Create()함수를 이용하면 됩니다. CChildWnd객체를 생성해 놓고 SDIView.h파일을 보면 클래스 CSDIView 의 맴버 데이털 CCHildWnd객체 m_Wnd0이 생성되어야 합니다.

이렇게 코딩이 입력이 완료 되면 아래 화면이 출력 됩니다. 윈도우 안에 작은 창을 보실수 있을겁니다.



반응형
LIST
반응형
SMALL

SDI프로젝트를 만들기 위해서 MFC프로그램을 설치해야 합니다. 불론 Visual studio2017설치시에 MFC 체크하시면 자동으로 설치됩니다. 말로 하는것 보다는 그림을 보면 더욱 이해가 빠르겠지요.


* 빨강색으로 표시한 부분을 체크하셔서 설치하시면 됩니다. window xp사용하는

분은 c++ 용 windows지원에 체크하시면 됩니다.

혹시 Visual studio2017 설치하고 미처 MFC 및 ATL 지원체크를 못하셨다면

Visual studio2017 Install 클릭하여 수정선택하며 위의 그림 나옵니다. 체크하시면

다시 설치됩니다.


파일 ->새로만들기 ->프로젝트->visual C++ ->MFC->MFC 응용프로그램선택


응용프로그램 종류: 단일문서 선택/ 프로젝트 스타일 : MFC standard

비주얼 스타일 및 색: Windows Native/Default 선택하시면 됩니다.

빨강색 표시 체크확인하시면 됩니다.


빨강색으로 표시된 부분은 체크를 하시면 안됩니다. 

마지막으로 이부분까지 체크하시고 완료됩니다.

빌드하시고 디버깅 하시면 윈도우 창이 뜹니다. 정상적으로 MFC프로젝트 파일이

만들어 진것을 보실수 있습니다. 

반응형
LIST

+ Recent posts