메모장 구동.

Slides:



Advertisements
Similar presentations
자바 5.0 프로그래밍.
Advertisements

어서와 Java는 처음이지! 제3장선택과 반복.
11장. 프로토콜 핸들러 AI &HC I LAB 김 성 현.
- 계산기 GUI 구성하기 - 조원: 박강국 오정은 이귀식 김도윤 안영진.
10. 예외 처리.
Ch.22 Command Pattern 장 덕 성 계명대학교 컴퓨터공학과 정보공학실험실
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
GUI 이벤트, 이벤트 리스너와 이벤트 소스 그림 그리기 내부 클래스
제7장 이벤트 프로그래밍.
제9장 입출력과 JNI.
7장 배열 ③.
레이아웃 관리자 스윙 구성요소 비트박스 프로그램
명품 JAVA Programming 제 13 장 스레드와 멀티태스킹.
컴퓨터 프로그래밍 실습 #7 제 4 장 GUI 클래스 작성.
명품 JAVA Essential.
명품 JAVA Programming.
5 익셉션 처리.
제 4 장 클래스 작성 Lab 4- 2.
DB와 WEB 연동(1) [2-Tier] Java Applet 이용
9장 AWT(1).
[INA470] Java Programming Youn-Hee Han
Java 12장. 입출력 public class SumTest {
8장 자바 입출력.
Lesson 3. 입출력과 제어문.
Choi Younghwan CSE HUFS
java.awt 패키지의 단순 컴포넌트와 이벤트 처리
Java로 배우는 디자인패턴 입문 Chapter 22. Command 명령을 클래스로 만든다
객체지향 언어와 클래스, 객체 ㅎㅎ 개요 클래스의 선언, 객체의 생성 및 속성 참조 방식 멤버 변수 메소드 한빛미디어(주)
Swing 컴포넌트 텍스트 컴포넌트 텍스트 필드 텍스트 영역 스크롤 페인 체크 박스 라디오 버튼.
이벤트 프로그래밍 안혜선.
Java Seminar Chapter 4.
10장 예외 Lab 10-2.
01. 직렬화와 역직렬화에 대하여 객체의 직렬화 직렬화와 역직렬화
명품 JAVA Programming 제 8 장 입출력 스트림과 파일 입출력.
명품 JAVA Essential.
5장 조건과 반복 ③.
명품 Java Programming.
최용술 장 Thread 최용술
명품 JAVA Essential.
Chap07 예외 처리 7.1 예외의 개요 7.2 예외 관련 클래스 7.3 예외 처리.
10장 다중 스레드 10.1 스레드 개요 10.2 Thread 클래스 10.3 스레드 생성
Hadoop 김연왕
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
9장 AWT(1).
GUI 프로그래밍과 AWT 컴퓨터 공학실험(I) 인공지능 연구실.
명품 JAVA Programming 제 15 장 애플릿과 멀티미디어.
주소록 프로그램.
Network Programming(1)
6장 객체-지향 설계 ①.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
4장 Random Number 프로그래밍 언어 실험실 석사 3학기 박중기
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
6장 객체-지향 설계 ①.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
JAVA WINDOW PROGRAMMING
컴퓨터공학실습(I) 3주 인공지능연구실.
JA A V W. 04.
CACM 구현 public class CACM { public CACM(File file)
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
제8장 쓰레드 프로그래밍.
제 4 장 클래스 작성 Lab 4- 2.
Outline 클래스의 해부 캡슐화(Encapsulation) 메쏘드의 해부 그래픽 객체(Graphical Objects)
GUI 프로그래밍과 AWT 컴퓨터 공학실험(I) 인공지능 연구실.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
C# 10장. 참조형.
Java 5장. 객체지향 개념 public class SumTest {
5장 조건과 반복 ③.
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
Presentation transcript:

메모장 구동

import java.io.*; import java.awt.*; import java.awt.event.*; public class Memojang extends Frame implements WindowListener { private MemoActionListener mal = null; private TextArea ta = null; private MenuBar mb = null; private Menu mfile = null; private String filename = "새파일"; private FileDialog fd = null; public Memojang() { fd = new FileDialog(this); ta = new TextArea(); add(ta,BorderLayout.CENTER); mal = new MemoActionListener(this, fd); mb = new MenuBar(); mfile = new Menu("파일"); itemAdd("새파일",mfile); itemAdd("열기",mfile); itemAdd("저장",mfile); itemAdd("종료",mfile); mb.add(mfile); setMenuBar(mb); setTitle(filename); addWindowListener(this); } private void itemAdd(String title, Menu m) { MenuItem mi = new MenuItem(title); mi.addActionListener(mal); m.add(mi); } //윈도우 종료 public void windowClosing(WindowEvent we) { System.exit(0);

이벤트 그래픽 사용자 인터페이스에서 발생하는 모든 동작 이벤트 처리 예.(윈도우 창닫기 이벤트) 자바의 이벤트 모델 위임형 모델(delegation event model) GUI의 컴포넌트에서 이벤트가 발생되면, 해당되는 리스너(listener)에게 이벤트 처리를 넘겨주는 방식 이벤트 처리를 위한 컴포넌트에는 해당 리스너가 등록되어 있어야 하며, 리스너에는 이벤트를 처리할 처리루틴이 포함되어 있어야 한다 이벤트 처리 예.(윈도우 창닫기 이벤트) WindowEvent.WINDOW_CLOSING 이벤트 발 addWindowListener() WindowListener를 이용하여 이벤트 발생 감시, 감지 WindowAdapter 클래스로 대용 가능

import java.awt.*; import java.awt.event.*; public class Memo extends Frame { public static void main(String args[]) { Memo np = new Memo(); AdapterTest at = new AdapterTest(); np.addWindowListener(at); np.setSize(600,450); np.setVisible(true); } class AdapterTest extends WindowAdapter { public void windowClosing(WindowEvent e){ System.exit(0);

ta.setText(""); public void windowClosed(WindowEvent we) {} public void windowOpened(WindowEvent we) {} public void windowIconified(WindowEvent we) {} public void windowDeiconified(WindowEvent we) {} public void windowDeactivated(WindowEvent we) {} public void windowActivated(WindowEvent we) {} public void loadFile(String fn) { //파일을 읽어 들이는 메서드를 정의한다. File file = new File(fn); FileReader fr = null; BufferedReader br = null; try { fr = new FileReader(file); br = new BufferedReader(fr); String str = null; ta.setText(""); while((str=br.readLine())!=null) { ta.append(str+"\n");  핵심 } }catch(IOException ioe) { } filename = fn; setTitle(fn);

TextArea 여러 줄로 이루어진 문자를 보여주는 역할을 한다. 수직 스크롤바, 수평 스크롤바를 부여할 수 있다.

생성자 TextArea() TextArea(String text) TextArea(int rows, int columns) 내용이 없는 텍스트영역을 표현한다. 기본적으로 수평 및 수직 스크롤바를 가지고 있다. TextArea(String text) 인자의 값을 텍스트 영역에 표현한다. 기본적으로 수평 및 수직 스크롤바를 가지고 있다. TextArea(int rows, int columns) 행의 개수 rows, 열의 개수 columns 만큼의 사이즈로 표현된 텍스트 영역을 나타낸다. TextArea(String text, int rows, int columns) 행의 개수 rows, 열의 개수 columns 만큼의 사이즈로 표현된 텍스트 영역을 나타내며, 인자 text의 내용을 텍스트 영역에 나타낸다. TextArea(String text, int rows, int columns, int scrollbars) 행의 개수 rows, 열의 개수 columns 만큼의 사이즈로 표현된 텍스트 영역을 나타내며, 인자 text의 내용을 텍스트 영역에 나타낸다. 그리고 인자 scrollbars에서 표현한 스크롤바를 가진다.

import java.awt.*; public class Memo extends Frame { private TextArea ta = null; private String str= "텍스트 영역과 관련된 클래스 사용"; public Memo() { ta = new TextArea(str, 50, 50, TextArea.SCROLLBARS_HORIZONTAL_ONLY); add(ta, BorderLayout.CENTER); } public static void main(String args[]) { Memo np = new Memo(); np.setSize(600,450); np.setVisible(true);

TextArea의 편집 메서드 append (String str) insert (String str, int pos) 텍스트 영역내 현재의 텍스트에 지정된 텍스트를 추가합니다. insert (String str, int pos) 텍스트 영역내의 지정된 위치에 지정된 텍스트를 삽입합니다. setRows(int rows) getRows() setColumns(int columns) getColumns() getScrollbarVisibility() 현재의 텍스트 영역에서 사용중인 스크롤바의 형태를 반환해 준다.

public void saveFile(String fn) { File file = new File(fn); try { FileOutputStream fos = new FileOutputStream(file); PrintStream ps = new PrintStream(fos); ps.print( ta.getText() ); }catch(IOException ioe) { } filename = fn; setTitle(fn); } public void newFile() { filename = "새파일"; ta.setText(""); setTitle(filename); public static void main(String args[]) { Memojang mj = new Memojang(); mj.setSize(600,450); mj.setVisible(true);

import java.awt.*; import java.awt.event.*; class MemoActionListener implements ActionListener { private TextArea ta = null; private FileDialog fd = null; private Memojang frm = null; public MemoActionListener(Memojang frm, FileDialog fd) { this.frm = frm; this.ta = ta; this.fd = fd; } public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); String filename = null; if(cmd.equals("열기")) { fd.setTitle("읽을 파일을 선택하세요."); fd.setVisible(true); filename = fd.getDirectory()+fd.getFile(); frm.setTitle(filename); frm.loadFile(filename); //파일의 내용을 텍스트 영역에 적는다.

else if(cmd.equals("저장")) { fd.setTitle("저장할 파일을 선택하세요."); fd.setVisible(true); filename = fd.getDirectory()+fd.getFile(); frm.saveFile(filename); } else if(cmd.equals("종료")) { System.exit(0); else { frm.newFile();

Menu MenuItem에 의해 발생되는 이벤트는 ActionEvent 뿐이다. 따라서 메뉴 항목에 대한 이벤트를 처리하기 위해서는 ActionListener 클래스를 이용해야 한다. 하부 메뉴 만들기 예. MenuBar mbar = new MenuBar(); Menu menu = new Menu("Edit"); Menu menusub = new Menu("Delete"); menu.add(menusub); mbar.add(menu);

import java.awt.*; public class Memo2 { public Memo2() { Frame frame = new Frame(); TextArea ta = new TextArea(); frame.add(ta,"Center"); MenuBar mbar = new MenuBar(); Menu menu = new Menu("Edit"); Menu menusub = new Menu("Delete"); MenuItem mitem1 = new MenuItem("Delete Line"); MenuItem mitem2 = new MenuItem("Delete Words"); menusub.add(mitem1); menusub.add(mitem2); menu.add(menusub); menu.addSeparator(); MenuItem mitem3 = new MenuItem("Select"); MenuItem mitem4 = new MenuItem("Append"); menu.add(mitem3); menu.add(mitem4); mbar.add(menu); frame.setMenuBar(mbar); frame.setSize(600,500); frame.setVisible(true); }

public static void main(String[] args) { Memo2 memo = new Memo2(); }

import java.awt.*; public class Memo3 { public Memo3() { Frame frame = new Frame(); TextArea ta = new TextArea(); frame.add(ta,"Center"); MenuBar mbar = new MenuBar(); Menu menu = new Menu("View"); menu.add(new CheckboxMenuItem("Ruler")); menu.add(new CheckboxMenuItem("Line Number")); mbar.add(menu); frame.setMenuBar(mbar); frame.setSize(600,500); frame.setVisible(true); } public static void main(String[] args) { Memo3 memo = new Memo3();