slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
메모장 구동 PowerPoint Presentation
Download Presentation
메모장 구동

Loading in 2 Seconds...

play fullscreen
1 / 18

메모장 구동 - PowerPoint PPT Presentation


  • 110 Views
  • Uploaded on

메모장 구동. 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;

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '메모장 구동' - zelia


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide3
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);

}

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

}

}

slide6
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
  • 여러 줄로 이루어진 문자를 보여주는 역할을 한다.
  • 수직 스크롤바, 수평 스크롤바를 부여할 수 있다.
slide8
생성자
    • TextArea()
      • 내용이 없는 텍스트영역을 표현한다. 기본적으로 수평 및 수직 스크롤바를 가지고 있다.
    • 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에서 표현한 스크롤바를 가진다.
slide9
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);

}

}

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

}

}

slide13
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); //파일의 내용을 텍스트 영역에 적는다.

}

slide14
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();

}

}

}

slide15
Menu
  • MenuItem에 의해 발생되는 이벤트는 ActionEvent 뿐이다. 따라서 메뉴 항목에 대한 이벤트를 처리하기 위해서는 ActionListener 클래스를 이용해야 한다.
  • 하부 메뉴 만들기 예.

MenuBar mbar = new MenuBar();

Menu menu = new Menu("Edit");

Menu menusub = new Menu("Delete");

menu.add(menusub);

mbar.add(menu);

slide16
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);

}

slide17
public static void main(String[] args) {

Memo2 memo = new Memo2();

}

}

slide18
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();

}

}