Download presentation
Presentation is loading. Please wait.
1
메모장 구동
3
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);
4
이벤트 그래픽 사용자 인터페이스에서 발생하는 모든 동작 이벤트 처리 예.(윈도우 창닫기 이벤트) 자바의 이벤트 모델
위임형 모델(delegation event model) GUI의 컴포넌트에서 이벤트가 발생되면, 해당되는 리스너(listener)에게 이벤트 처리를 넘겨주는 방식 이벤트 처리를 위한 컴포넌트에는 해당 리스너가 등록되어 있어야 하며, 리스너에는 이벤트를 처리할 처리루틴이 포함되어 있어야 한다 이벤트 처리 예.(윈도우 창닫기 이벤트) WindowEvent.WINDOW_CLOSING 이벤트 발 addWindowListener() WindowListener를 이용하여 이벤트 발생 감시, 감지 WindowAdapter 클래스로 대용 가능
5
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);
6
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);
7
TextArea 여러 줄로 이루어진 문자를 보여주는 역할을 한다. 수직 스크롤바, 수평 스크롤바를 부여할 수 있다.
8
생성자 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에서 표현한 스크롤바를 가진다.
9
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);
10
TextArea의 편집 메서드 append (String str) insert (String str, int pos)
텍스트 영역내 현재의 텍스트에 지정된 텍스트를 추가합니다. insert (String str, int pos) 텍스트 영역내의 지정된 위치에 지정된 텍스트를 삽입합니다. setRows(int rows) getRows() setColumns(int columns) getColumns() getScrollbarVisibility() 현재의 텍스트 영역에서 사용중인 스크롤바의 형태를 반환해 준다.
12
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);
13
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); //파일의 내용을 텍스트 영역에 적는다.
14
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();
15
Menu MenuItem에 의해 발생되는 이벤트는 ActionEvent 뿐이다. 따라서 메뉴 항목에 대한 이벤트를 처리하기 위해서는 ActionListener 클래스를 이용해야 한다. 하부 메뉴 만들기 예. MenuBar mbar = new MenuBar(); Menu menu = new Menu("Edit"); Menu menusub = new Menu("Delete"); menu.add(menusub); mbar.add(menu);
16
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); }
17
public static void main(String[] args) {
Memo2 memo = new Memo2(); }
18
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();
Similar presentations