//JAVA 클래스 패키지 가져오기
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
java.io.*
클래스
가져오기;
{
//기본 생성자
편집파일(){}
//파일 저장 함수
void SaveFile(문자열 이름, 문자열 str)
{
노력하다
{
//파일 출력 객체 선언
FileOutputStream fos = new FileOutputStream(이름);
//세이브 파일 출력
fos.write(str.getBytes());
}
잡기(IOException e)
{
//오류가 발생하고 오류 메시지를 출력합니다.
System.out.println(e.toString());
}
}
//파일 열기 함수
String OpenFile(문자열 이름)
{
//파일 내용을 저장하기 위해 문자열 str을 정의합니다.
문자열 str=null;
//카운터 정의
int ch=0;
노력하다
{
//파일 입력 객체 선언
FileInputStream fis = new FileInputStream(이름);
//입력 객체를 순회하고 메모리를 str에 저장합니다.
동안 ((ch=fis.read())!=-1)
{
str=str+(char)ch;
}
//파일 객체 닫기
fis.close();
}
잡기(IOException e)
{
//오류가 발생하고 오류 메시지를 출력합니다.
System.out.println(e.toString());
}
//문자열을 반환
str을 반환;
}
}
클래스 MyMainFrame은 JFrame을 확장하고 ActionListener를 구현합니다.
{
//파일 이름
문자열 파일명=null;
//문자열 찾기
문자열 findtxt=null;
//문자열 교체
문자열 대체txt=null;
//시작 위치 찾기
int findtxton=-1;
//끝 비트 찾기
int findtxtoff=-1;
//중간 패널
컨테이너 c=getContentPane();
//메뉴
JMenuBar mainMb=new JMenuBar();
//메뉴버튼
JMenu fileMenu=new JMenu("파일");
JMenu editMenu=new JMenu("편집");
JMenu typeMenu=new JMenu("format");
JMenuItem newItem=new JMenuItem("새 항목");
JMenuItem openItem=new JMenuItem("열기");
JMenuItem saveItem=new JMenuItem("저장");
JMenuItem saveasItem=new JMenuItem("다른 이름으로 저장");
JMenuItem exitItem=new JMenuItem("종료");
JMenuItem findItem=new JMenuItem("찾기");
JMenuItem findnextItem=new JMenuItem("다음 찾기");
JMenuItemchangeItem=new JMenuItem("교체");
JCheckBoxMenuItemchangelineItem=new JCheckBoxMenuItem("자동 줄 바꿈",false);
//텍스트 필드
JTextArea txt=new JTextArea();
JTextArea txt2=새 JTextArea();
//스크롤바
JScrollPane jsp;
//파일 작업 객체
편집파일 ef=새 편집파일();
//건설자
마이메인프레임()
{
//인터페이스 그리기
c.setLayout(new BorderLayout());
jsp= 새로운 JScrollPane(txt);
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_AS_NEEDED);
c.add(jsp,BorderLayout.CENTER);
mainMb.add(fileMenu);
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(saveasItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
mainMb.add(editMenu);
editMenu.add(findItem);
editMenu.add(findnextItem);
editMenu.add(changeItem);
mainMb.add(typeMenu);
typeMenu.add(changelineItem);
setJMenuBar(mainMb);
//메뉴에 대한 이벤트 수신을 추가합니다.
newItem.addActionListener(this);
openItem.addActionListener(this);
saveItem.addActionListener(this);
saveasItem.addActionListener(this);
ExitItem.addActionListener(this);
findItem.addActionListener(this);
findnextItem.addActionListener(this);
changeItem.addActionListener(this);
ChangelineItem.addActionListener(this);
}
//이벤트 핸들러 함수
공개 무효 actionPerformed(ActionEvent e)
{
//파일 작업 객체 생성
편집파일 ef=새 편집파일();
//버튼을 클릭하면 새로운 버튼이 됩니다.
if(e.getActionCommand()=="새로 만들기")
{
//텍스트 필드를 공백으로 설정
txt.setText(null);
//파일 이름이 비어 있습니다.
파일명=null;
}
//열기 위해 버튼을 클릭한 경우
if(e.getActionCommand()=="열기")
{
//파일 형식 정의
FileDialog openDialog=new FileDialog(this,"파일 열기...",FileDialog.LOAD);
//표시 형식
openDialog.show();
//반환된 파일이 비어 있지 않은 경우
if(openDialog.getFile()!=null)
{
//파일명을 알아낸다
파일명=openDialog.getFile();
//파일 내용 가져오기
txt.setText(ef.OpenFile(openDialog.getFile()));
}
}
//버튼을 클릭하여 저장하는 경우
if(e.getActionCommand()=="저장")
{
//파일명이 없을 경우
if(파일명==null)
{
//파일 형식 정의
FileDialog saveDialog=new FileDialog(this,"다른 이름으로 저장...",FileDialog.SAVE);
//표시 형식
saveDialog.show();
//반환된 파일이 비어 있지 않은 경우
if(saveDialog.getFile()!=null)
{
//파일명을 알아낸다
파일명=saveDialog.getFile();
//파일 저장
ef.SaveFile(파일명,txt.getText());
}
}
또 다른
{
//파일을 직접 저장
ef.SaveFile(파일명,txt.getText());
}
}
//다른 이름으로 저장 버튼을 클릭하면
if(e.getActionCommand()=="다른 이름으로 저장")
{
//파일 형식 정의
FileDialog saveDialog=new FileDialog(this,"다른 이름으로 저장...",FileDialog.SAVE);
//표시 형식
saveDialog.show();
//반환된 파일이 비어 있지 않은 경우
if(saveDialog.getFile()!=null)
{
//파일명을 알아낸다
파일명=saveDialog.getFile();
//파일 저장
ef.SaveFile(파일명,txt.getText());
}
}
//버튼을 클릭하여 종료하는 경우
if(e.getActionCommand()=="종료")
{
//그만두다
시스템.exit(0);
}
//버튼을 클릭하면 검색이 됩니다.
if(e.getActionCommand()=="찾기")
{
//대화상자 정의
JOptionPane inputdia=new JOptionPane();
//검색 텍스트를 얻기 위한 대화 상자 정의
findtxt=inputdia.showInputDialog("찾고자 하는 텍스트를 입력하세요.",null);
//실제 좌표 정의
findtxton=-1;
findtxtoff=-1;
//검색 함수 호출
찾다();
}
//다음 버튼을 찾기 위해 버튼을 클릭하면
if(e.getActionCommand()=="다음 찾기")
{
//검색 함수 호출
찾다();
}
//버튼을 클릭하면 교체
if(e.getActionCommand()=="교체")
{
//대화상자 정의
JOptionPane inputdia=new JOptionPane();
//텍스트 찾기 및 바꾸기
findtxt=inputdia.showInputDialog("바꿀 텍스트를 입력하세요.",null);
replacementtxt=inputdia.showInputDialog("바꿀 텍스트를 입력하세요.",null);
//백업 내용
txt2.setText(replacetxt);
txt2.selectAll();
txt2.복사();
//검색 함수 호출
찾다();
//찾지 못한 경우
if(findtxton==-1&&findtxtoff==-1)
{
}
//발견된 경우
또 다른
{
//바꾸다
txt.붙여넣기();
}
findtxton=-1;
findtxtoff=-1;
}
//버튼을 클릭하면 자동으로 래핑됩니다.
if(e.getActionCommand()=="자동 줄 바꿈")
{
//현재 상태 판단
if(changelineItem.isSelected()==true)
{
//스크롤바 상태 설정
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_NEVER);
//랩핑할지 말지 설정
txt.setLineWrap(true);
}
또 다른
{
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_AS_NEEDED);
txt.setLineWrap(false);
}
}
}
//함수 찾기
공공 무효 찾기()
{
//임시 문자열 정의
문자열 tempstr;
//비어있지 않은 경우 텍스트 찾기
if(findtxt!=null)
{
노력하다
{
//찾다
tempstr=txt.getText(findtxton+1,(txt.getText().length()-findtxton-1));
findtxton=findtxton+1+tempstr.indexOf(findtxt);
}
잡기(예외e)
{
}
//시작 비트가 변경되면 발견됩니다.
if(findtxton!=-1)
{
//끝 비트 설정
findtxtoff=findtxton+findtxt.length();
}
또 다른
{
//그렇지 않으면 찾을 수 없다고 표시됩니다.
findtxtoff=-1;
JOptionPane.showMessageDialog(null,"찾을 수 없음");
}
//찾은 부분 선택
txt.select(findtxton,findtxtoff);
}
}
}
공개 클래스 TextEdit
{
//주요 함수
공개 정적 무효 메인(문자열 인수[])
{
//메인폼 설정 선언
MyMainFrame f=new MyMainFrame();
f.setSize(640,480);
f.setTitle("텍스트 편집기");
//메인 폼 표시
f.setVisible(true)
}
}
/*
JTextArea의 자동 줄 바꿈 문제
------------------------------------- ----------------------------------
가로 스크롤 막대가 JSctollpane으로 설정된 경우.
, 그러면 이 JSctollpane 객체가 추가된 JTextArea는 줄 바꿈 기능을 갖게 됩니다. 그렇죠?
------------------------------------- -------------
JTextArea.setLineWrap(부울 랩)
------------- ---- -------------------- ---- --------------
JTextArea.setLineWrap(boolean Wrap)//일반 줄 바꿈.
JTextArea.setWrapStyleWorld(boolean world)//단어 가장자리를 경계로 사용하여 줄 바꿈
*/