본문 바로가기

개인 공부방/JAVA

자바 간단한 파일 input 프로그램

package net.hb.day17;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;

public class Chat extends Frame implements ActionListener {
private TextArea ta = new TextArea();
private Label LB = new Label("입력   : ");
private TextField tf = new TextField(10);
private Button btnSend = new Button("보내기");
private Button btnExit = new Button("종료");
private Panel pSouth = new Panel();
//메뉴바, 메뉴, 메뉴 item
private MenuBar mb = new MenuBar();
private Menu mFile = new Menu("파일");
private MenuItem mFile_new = new MenuItem("새파일");
private MenuItem mFile_open = new MenuItem("열기");
private MenuItem mFile_exit = new MenuItem("종료");
private Menu mEdit = new Menu("편집");
private MenuItem mEdit_cut = new MenuItem("오려두기");
private MenuItem mEdit_copy = new MenuItem("복사");
private MenuItem mEdit_paste = new MenuItem("붙여넣기");
private MenuItem mEdit_del = new MenuItem("내용삭제");
private Menu mHelp = new Menu("도움말");
//도움말은 서브메뉴가 없음
public Chat() {
ta.setFont(new Font("SansSerif", Font.BOLD,24));
this.setBounds(200, 200, 600, 400);
this.setVisible(true);
this.setBackground(Color.white);

//메뉴붙이기
this.setMenuBar(mb); //이 작업을 해야만 메뉴가 보인다.
mb.add(mFile);
mFile.add(mFile_new); //입력란 clear
mFile.add(mFile_open); //열기 메뉴 클릭하면 FileDialog박스, 441p참조
mFile.add(mFile_exit);
mEdit.addSeparator(); //분리선
mFile.add(mEdit);
mEdit.add(mEdit_cut); mEdit.add(mEdit_copy);
mEdit.add(mEdit_paste); mEdit.add(mEdit_del);
mb.add(mHelp);
//서브매뉴가 없는 Help
pSouth.add(LB);
pSouth.add(tf);
pSouth.add(btnSend);
pSouth.add(btnExit);

// Frame클래스의 기본 layout은 동서남북,센터 = BorderLayout
this.add("Center", ta);
this.add("South", pSouth);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(1);
}
});// X 자를 누르면 종료가능

/************ActionListener 연결부분***************/
btnExit.addActionListener(this); // 종료와 지금 함수를 연결시켜준다.
btnSend.addActionListener(this); // 보내기버튼 활성화
mFile_exit.addActionListener(this);
mFile_new.addActionListener(this);
mFile_open.addActionListener(this);
tf.addActionListener(this);
}// 생성자 end

@Override
// action Listener
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnExit) {
System.exit(1);
}
if (e.getSource() == btnSend) {
uMessage();
}
if (e.getSource() == tf) {
uMessage();
}
if (e.getSource() == mFile_exit ){
System.exit(1);
}
if (e.getSource() == mFile_new ){
ta.setText(""); tf.setText(""); tf.requestFocus();
}
if (e.getSource() == mFile_open){
uFileOpen();
}
}
public void uFileOpen(){
try {
FileDialog fd = new FileDialog(this,"열기",FileDialog.LOAD);
fd.setVisible(true);
String dir = fd.getDirectory();
String file = fd.getFile();
System.out.println("파일경로 : "+ (dir+file));

//자바 IO처리 BufferedReader, FileReader
FileReader fr = new FileReader(dir+file);
BufferedReader br = new BufferedReader(fr);

//가위바위보 Gabb파일과 비교
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader buff = new BufferedReader(isr);
Scanner sc = new Scanner(System.in);
String data = ""; //내용을 받기 위해서
while(true){
data = br.readLine();
if(data ==null) break;
ta.append(data + "\n"); //c:\zoom\gooday\Day1110\Package\file.java 가져와보자
}
br.close(); fr.close();
} catch (Exception e) {
// TODO: handle exception
}
}

private void uMessage() {
// 여러라인 입력가능한 것은 TextArea
String dd = tf.getText();
ta.append(dd + "\n"); // 입력한 내용 지우고, 초점
tf.setText("");
tf.requestFocus(); //다시 커서가게 해준다.
}

public static void main(String[] args) {
Chat c = new Chat(); // 개체가 없는 익명의 개체
c.display();
}

public void display() {
System.out.println("Chat함수 display함수");
}

public class MyExit extends WindowAdapter { // MyExit.java파일형태 대신
public void windowClosing(WindowEvent we) {// Chat$MyExit.class만 존재함
System.exit(1);
}// 내부클래스
}
}