/////////////////////////////////////////////기본 틀 생성
package memo;
import memo.event.*;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
public class JavaMemo extends Frame {
//public 을 붙이면 사용 가능하나
//파일 메뉴에 들어갈 메뉴 아이템
private MenuItem miNewWrite, miFileOpen, miFileSave, miFileSaveAs,miMemoEnd;
//서식에 들어갈 메뉴 아이템
private MenuItem miFontForm;
//도움말
private MenuItem miMemoHelp;
private TextArea writeField;
private JavaMemo() {
super("자바메모장 - [제목 없음]");
//메뉴바 생성
MenuBar mb = new MenuBar();
//메뉴 생성
Menu fileMenu = new Menu("파일");
Menu formMenu =new Menu("서식");
Menu helpMenu = new Menu("도움말");
///////메뉴 아이템 생성
miNewWrite = new MenuItem("새글");
miFileOpen = new MenuItem("열기");
miFileSave = new MenuItem("저장");
miFileSaveAs = new MenuItem("다른이름으로 저장");
miMemoEnd = new MenuItem("종료");
//서식에 들어갈 메뉴 아이템
miFontForm = new MenuItem("글꼴");
//도움말
miMemoHelp = new MenuItem("도움말");
writeField = new TextArea();
///////////메뉴바/////////////
mb.add(fileMenu);
mb.add(formMenu);
mb.add(helpMenu);
//////////////파일/////////////////////////////
fileMenu.add(miNewWrite);
//구분선 separator 추가
fileMenu.addSeparator();
fileMenu.add(miFileOpen);
fileMenu.addSeparator();//=add("-"); awt에서만 가능
fileMenu.add(miFileSave);
fileMenu.add(miFileSaveAs);
fileMenu.addSeparator();
fileMenu.add(miMemoEnd);
///////////////서식///////////////////////////
formMenu.add(miFontForm);
/////////////////도움말///////////////////////
helpMenu.add(miMemoHelp);
setMenuBar(mb);
add("Center",writeField);
//이벤트 등록
//이벤트를 등록하기 위해서 이벤트 처리클래스를 생성
MemoEvt me = new MemoEvt(this);//현재 인스턴스를 가리키기 위해 this 사용
//윈도우 이벤트 등록
addWindowListener(me);
//액션이벤트 등록(메뉴아이템을 클릭했을때)
miNewWrite.addActionListener(me);
miFileOpen.addActionListener(me);
miFileSave.addActionListener(me);
miFileSaveAs.addActionListener(me);
miMemoEnd.addActionListener(me);
miFontForm.addActionListener(me);
miMemoHelp.addActionListener(me);
///////윈도우 크기////////////
setBounds(10,40,600,400);
setVisible(true);
}
public MenuItem getMiNewWrite() {
return miNewWrite;
}
public MenuItem getMiFileOpen() {
return miFileOpen;
}
public MenuItem getMiFileSave() {
return miFileSave;
}
public MenuItem getMiFileSaveAs() {
return miFileSaveAs;
}
public MenuItem getMiMemoEnd() {
return miMemoEnd;
}
public MenuItem getMiFontForm() {
return miFontForm;
}
public MenuItem getMiMemoHelp() {
return miMemoHelp;
}
public TextArea getWriteField() {
return writeField;
}
public static void main(String[] args) {
new JavaMemo();
}//main
}//class
///////////////////////////////////////////////////////기본틀 이벤트 처리
package memo.event;
import java.awt.FileDialog;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import memo.Form;
import memo.Help;
import memo.JavaMemo;
public class MemoEvt extends WindowAdapter implements ActionListener {
JavaMemo jm;
public MemoEvt(JavaMemo jm){
this.jm=jm;
//MemoEvt 클래스에서 디자인 클래스를 사용할수있다.
}//MemoEvt
@Override
public void windowClosing(WindowEvent e) {
//System.exit(0);
jm.dispose();
}//windowClosing
private void newWrite(){
//새글
//글이있는지 판단하고 저장여부를 묻고
//저장 - 파일다이얼로그를 호출하든,
//아니오- 텍스트에어리어의 내용을그냥삭제
//취소- 원래의 상태로 보여준다.
TextArea taTemp=jm.getWriteField();
taTemp.setText("");
//프레임의 타이틀바의 내용을 새글로 변경
jm.setTitle("자바메모장 - [ 새글 ]");
}//newWrite
//열기메서드
private void openFile(){
//텍스트에어리어에 내용이 없으면 열기
//텍스트에어리어에 내용이 있으면
//처음열었을때의 내용과 같으면 그냥 열기
//다르면 저장여부 묻기 (예,아니오,취소)
FileDialog open=new FileDialog(jm,"파일열기",FileDialog.LOAD);
open.setVisible(true);
// String path=open.getDirectory();
String file=open.getFile();
//타이틀바의 내용 변경
if(file != null){
jm.setTitle("자바메모장(열기) - [ "+file+" ]");
}//end if
}//private
//저장
private void saveFile(){
//텍스트에어리어의 내용이 있든 없든 저장다이얼로그띄운다.
//열기를 한후에 저장이 눌리면 현재 연파일명으로 덮어쓰기
//를 한다.
saveDialog();
}//saveFile
//저장다이얼로그를 띄우는 메서드
private void saveDialog(){
FileDialog save=new
FileDialog(jm,"파일저장",FileDialog.SAVE);
save.setVisible(true);
// String path=save.getDirectory();
String file=save.getFile();
if(file != null){
jm.setTitle("자바메모장(저장) - [ " +file+" ]");
}//end if
}//saveDialog
//다름이름으로 저장
private void saveAsFile(){
//모든상황에서 저장다이얼로그를 띄운다
saveDialog();
}//saveAsFile
//종료
private void end(){
//텍스트에어리어에 내용이없으면 그냥 종료
//텍스트에어리어에 내용이있으면
//저장여부를 묻는다. (예,아니오,취소)
//파일이열린상태에서 최초열었을때와 변경된 것이없으면
//그냥 종료, 변경된 내용이있으면 저장여부를 묻는다.
//System.exit(0);
jm.dispose();
}//end
//글꼴
private void fontForm(){
//다이얼로그를 상속받은 클래스를 객체화
new Form(jm);
}//form
//도움말
private void memoHelp(){
new Help(jm);
}//memoHelp
public void actionPerformed(ActionEvent ae) {
if(ae.getSource() == jm.getMiNewWrite()){ //새글
newWrite();
}//end if
if(ae.getSource() == jm.getMiFileOpen()){ //열기
openFile();
}//end if
if(ae.getSource() == jm.getMiFileSave()){ //저장
saveFile();
}//end if
if(ae.getSource() == jm.getMiFileSaveAs()){ //다른이름저장
saveAsFile();
}//end if
if(ae.getSource() == jm.getMiMemoEnd()){ //종료
end();
}//end if
if(ae.getSource() == jm.getFont()){ //글꼴
fontForm();
}//end if
if(ae.getSource() == jm.getMiMemoHelp()){ //도움말
memoHelp();
}//end if
}//actionPerformed
}//class
//////////////////////////////////////////////////////글꼴 다이얼로그 생성
package memo;
import java.awt.Button;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Dialog;
import java.awt.Font;
import java.awt.Label;
import java.awt.List;
import java.awt.TextField;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import memo.event.FontFormEvt;
public class Form extends Dialog {
private JavaMemo jm;
private Label output;
private TextField tfFont, tfStyle, tfSize;
private List listFont, listStyle, listSize;
private Button btAccept, btCancel;
public Form(JavaMemo jm) {
super(jm, "글꼴", true);
Label lbFont = new Label("글꼴 (F):");
Label lbStyle = new Label("글꼴 스타일(Y):");
Label lbSize = new Label("크기(S):");
output = new Label("가나다AaBbYyZz");
// /////////////////textFiled///////////////
tfFont = new TextField();
tfStyle = new TextField();
tfSize = new TextField();
// //////////////////list///////////////
listFont = new List();
listStyle = new List();
listSize = new List();
// listFont에 들어갈 아이템 생성
listFont.add("Dialog");
listFont.add("DialogInput");
listFont.add("Monospaced");
listFont.add("Serif");
listFont.add("SansSerif");
// listStyle에 들어갈 아이템 생성
// System.out.println(Font.PLAIN+" "+Font.BOLD);
//인덱스 번호 확인
listStyle.add("보통");
listStyle.add("굵게");
listStyle.add("기울임꼴");
listStyle.add("굵은 기울임꼴");
//listSize에 글꼴의 크기
for(int i=10;i<41;i+=2){
listSize.add(String.valueOf(i));
}
// 다이얼로그의 기본 배치관리자는 BoardLayout이 기본레이아웃
btAccept = new Button("적용");
btCancel = new Button("취소");
setLayout(null);
// 숙제 각 컴포넌트를 배치
// 배치코드를 넣어주세여
// 윈도우종료 이벤트만 처리
// 프레임(부모창),"타이틀바",모달(modal
// 모달 true-자식창이 실행되었을 때 부모창이 선택되지 않는것
// false - 자식창이 실행되었을때 부모창이 선택되는것
this.jm = jm;
// 프레임은 현재 자신의 좌표를 반환하는 메서드가 존재
// X좌표는 getX,Y좌표는 getY()
lbFont.setBounds(15, 35, 100, 20);
lbStyle.setBounds(198, 35, 100, 20);
lbSize.setBounds(335, 35, 100, 20);
tfFont.setBounds(15, 56, 171, 20);
tfStyle.setBounds(198, 56, 126, 20);
tfSize.setBounds(335, 56, 63, 20);
listFont.setBounds(15, 76, 171, 92);
listStyle.setBounds(198, 76, 126, 92);
listSize.setBounds(335, 76, 62, 92);
btAccept.setBounds(405, 56, 80, 25);
btCancel.setBounds(405, 90, 80, 25);
output.setBounds(200, 200, 150, 70);
output.setBackground(new Color(232,232,232));
add(output);
add(lbFont);
add(lbSize);
add(lbStyle);
add(tfFont);
add(tfSize);
add(tfStyle);
add(listFont);
add(listSize);
add(listStyle);
add(btAccept);
add(btCancel);
// 윈도우 종료 이벤트 만 처리 System
FontFormEvt ffe = new FontFormEvt(this);
// 윈도우 이벤트에 객체를 등록 처리할 곳 기술
addWindowListener(ffe);
//리스트 이벤트 등록
listFont.addItemListener(ffe);
listStyle.addItemListener(ffe);
listSize.addItemListener(ffe);
//액션이벤트 등록
btAccept.addActionListener(ffe);
btCancel.addActionListener(ffe);
setBounds(jm.getX() + 50, jm.getY() + 100, 508, 323);
setVisible(true);
}
//getter를 만든 목적은 이벤트처리클래스나(외부클래스에서)
//현재클래스의 인스턴스 필드에 선언한 변수(객체)
public JavaMemo getJm() {
return jm;
}
public Label getOutput() {
return output;
}
public TextField getTfFont() {
return tfFont;
}
public TextField getTfStyle() {
return tfStyle;
}
public TextField getTfSize() {
return tfSize;
}
public List getListFont() {
return listFont;
}
public List getListStyle() {
return listStyle;
}
public List getListSize() {
return listSize;
}
public Button getBtAccept() {
return btAccept;
}
public Button getBtCancel() {
return btCancel;
}
}
////////////////////////////////////////////////////////글꼴 다이얼로그 이벤트 처리
package memo.event;
import java.awt.Font;
import java.awt.List;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import memo.Form;
public class FontFormEvt extends WindowAdapter
implements ActionListener,ItemListener {
Form form;
//이벤트처리클래스가 생성되면 부모창의 텍스트 에어리어의
//글꼴정보를 저장하는 변수
Font jmTextArea;
String temp_font="";//사용자가 선택한 글꼴을 저장
int temp_style=0,temp_size=0;//사용자가 선택한 스타일,크기
public FontFormEvt(Form form){
this.form=form;
//메모장클래스의 텍스트에어리어의 글꼴정보를 얻는다.
jmTextArea=form.getJm().getWriteField().getFont();
temp_font=jmTextArea.getFamily();
temp_style=jmTextArea.getStyle();
temp_size=jmTextArea.getSize();
//디자인클래스의 텍스트필드에 부모창에서 얻어낸 폰트정보를
//설정한다.
form.getTfFont().setText(temp_font);
form.getTfStyle().setText(
form.getListStyle().getItem(temp_style));
form.getTfSize().setText(String.valueOf(temp_size));
}//FontFormEvt
@Override
public void windowClosing(WindowEvent we){
//System.exit(0);
//현재 JVM에 올라와있는 모든 인스턴스를 종료시킨다.
//윈도우컴포넌트에는 dispose메서드가 존재해서
//현재 인스턴스만 종료 시킬 수 있다.
form.dispose();
}//windowClosing
@Override
public void windowClosed(WindowEvent we){
//윈도우 종료시 가장 마지막으로 해야할 일이 있다면
//처리하는 메서드
//System.out.println("windowClosed");
}//windowClosed
//리스트에서 이벤트가 발생했다
public void itemStateChanged(ItemEvent ie) {
//글꼴리스트가 선택
if(ie.getSource() == form.getListFont()){
//리스트의 선택된 값을 텍스트 필드에 기록
//form.getTfFont().setText(form.getListFont().getSelectedItem());
//디자인 클래스에서 텍스트필드를 얻어오고
TextField tfTemp=form.getTfFont();
//디자인 클래스에서 리스트를 얻어오고
List listTemp=form.getListFont();
//리스트에 현재사용자가 선택한 아이템값을 얻어와서
String str=listTemp.getSelectedItem();
//디자인클래스의 텍스트필드에 넣어준다.
tfTemp.setText(str);
//출력라벨에 폰트를 변경하기위해서 변수에 저장
temp_font=str;
}//end if
//스타일리스트가 선택
if(ie.getSource() == form.getListStyle()){
//리스트에 선택된 값을 텍스트필드에 넣어준다.
form.getTfStyle().setText(
form.getListStyle().getSelectedItem());
//출력라벨에 스타일을 변경하기위해서 변수에 저장
temp_style=form.getListStyle().getSelectedIndex();
}//end if
//크기 리스트가 선택
if(ie.getSource() == form.getListSize()){
//리스트에 선택된 값을 텍스트필드에 넣어준다.
form.getTfSize().setText(
form.getListSize().getSelectedItem());
//출력라벨에 크기를 변경하기위해서 변수에 저장
temp_size=Integer.parseInt(
form.getListSize().getSelectedItem());
}//end if
//디자인클래스의 output라벨의 텍스트를 변경해서 미리보기를
//구현한다.
Font font=new Font(temp_font,temp_style,temp_size);
form.getOutput().setFont(font);
}//itemStateChanged
//버튼에서 이벤트가 발생했다.
public void actionPerformed(ActionEvent ae) {
//적용눌리면 부모창의 텍스트에어리어에 현재 설정을
//저장한후 종료
if( ae.getSource() == form.getBtAccept()){
form.getJm().getWriteField().setFont(
new Font(temp_font, temp_style, temp_size));
/* //폰트클래스를 사용자가 선택한 설정으로 생성
Font setting=new Font(temp_font, temp_style, temp_size);
//부모창의 텍스트에어리어를 얻어온 후
TextArea jmWriteField=form.getJm().getWriteField();
//생성된 폰트를 부모창의 텍스트에어리어에 설정한다.
jmWriteField.setFont(setting);
*/
}//end if
//취소가 눌리면 그냥 종료
form.dispose();
}//actionPerformed
}//class
//////////////////////////////////////도움말 다이얼로그 생성
package memo;
import java.awt.Button;
import java.awt.Dialog;
import java.awt.List;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import memo.event.HelpEvt;
public class Help extends Dialog {
public Help(JavaMemo jm){
super(jm,"도움말",true);
String path=
"D:/memo/img.jpg";
ImageIcon img=new ImageIcon(path);
JLabel label=new JLabel(img);
List msg=new List();
msg.add("자바 메모장");
msg.add("");
msg.add("제작자 : James Dean");
msg.add("자바로 만든 메모장 입니다. 아무나 가져다쓰세요");
msg.add("Ver 1.0 라이센스없슴, 업데이트없슴");
Button bt=new Button("종료");
setLayout(null);
label.setBounds(10, 40, 100, 144);
msg.setBounds(115, 40, 300 , 100);
bt.setBounds(350, 150, 50, 20);
add(label);
add(msg);
add(bt);
//이벤트 등록
HelpEvt he = new HelpEvt(this);
//윈도우 이벤트 등록
addWindowListener(he);
//액션 이벤트 등록
bt.addActionListener(he);
setBounds(jm.getX()+100, jm.getY()+100, 425, 200);
setVisible(true);
setResizable(false);
}//Help
}//class
/////////////////////////////////////////////////////다이얼로그 이벤트 처리
package memo.event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import memo.Help;
public class HelpEvt extends WindowAdapter implements ActionListener {
Help help;
public HelpEvt(Help help) {
this.help = help;
}
public void actionPerformed(ActionEvent e) {
help.dispose();
}// acPer
}// class
package memo;
import memo.event.*;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
public class JavaMemo extends Frame {
//public 을 붙이면 사용 가능하나
//파일 메뉴에 들어갈 메뉴 아이템
private MenuItem miNewWrite, miFileOpen, miFileSave, miFileSaveAs,miMemoEnd;
//서식에 들어갈 메뉴 아이템
private MenuItem miFontForm;
//도움말
private MenuItem miMemoHelp;
private TextArea writeField;
private JavaMemo() {
super("자바메모장 - [제목 없음]");
//메뉴바 생성
MenuBar mb = new MenuBar();
//메뉴 생성
Menu fileMenu = new Menu("파일");
Menu formMenu =new Menu("서식");
Menu helpMenu = new Menu("도움말");
///////메뉴 아이템 생성
miNewWrite = new MenuItem("새글");
miFileOpen = new MenuItem("열기");
miFileSave = new MenuItem("저장");
miFileSaveAs = new MenuItem("다른이름으로 저장");
miMemoEnd = new MenuItem("종료");
//서식에 들어갈 메뉴 아이템
miFontForm = new MenuItem("글꼴");
//도움말
miMemoHelp = new MenuItem("도움말");
writeField = new TextArea();
///////////메뉴바/////////////
mb.add(fileMenu);
mb.add(formMenu);
mb.add(helpMenu);
//////////////파일/////////////////////////////
fileMenu.add(miNewWrite);
//구분선 separator 추가
fileMenu.addSeparator();
fileMenu.add(miFileOpen);
fileMenu.addSeparator();//=add("-"); awt에서만 가능
fileMenu.add(miFileSave);
fileMenu.add(miFileSaveAs);
fileMenu.addSeparator();
fileMenu.add(miMemoEnd);
///////////////서식///////////////////////////
formMenu.add(miFontForm);
/////////////////도움말///////////////////////
helpMenu.add(miMemoHelp);
setMenuBar(mb);
add("Center",writeField);
//이벤트 등록
//이벤트를 등록하기 위해서 이벤트 처리클래스를 생성
MemoEvt me = new MemoEvt(this);//현재 인스턴스를 가리키기 위해 this 사용
//윈도우 이벤트 등록
addWindowListener(me);
//액션이벤트 등록(메뉴아이템을 클릭했을때)
miNewWrite.addActionListener(me);
miFileOpen.addActionListener(me);
miFileSave.addActionListener(me);
miFileSaveAs.addActionListener(me);
miMemoEnd.addActionListener(me);
miFontForm.addActionListener(me);
miMemoHelp.addActionListener(me);
///////윈도우 크기////////////
setBounds(10,40,600,400);
setVisible(true);
}
public MenuItem getMiNewWrite() {
return miNewWrite;
}
public MenuItem getMiFileOpen() {
return miFileOpen;
}
public MenuItem getMiFileSave() {
return miFileSave;
}
public MenuItem getMiFileSaveAs() {
return miFileSaveAs;
}
public MenuItem getMiMemoEnd() {
return miMemoEnd;
}
public MenuItem getMiFontForm() {
return miFontForm;
}
public MenuItem getMiMemoHelp() {
return miMemoHelp;
}
public TextArea getWriteField() {
return writeField;
}
public static void main(String[] args) {
new JavaMemo();
}//main
}//class
///////////////////////////////////////////////////////기본틀 이벤트 처리
package memo.event;
import java.awt.FileDialog;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import memo.Form;
import memo.Help;
import memo.JavaMemo;
public class MemoEvt extends WindowAdapter implements ActionListener {
JavaMemo jm;
public MemoEvt(JavaMemo jm){
this.jm=jm;
//MemoEvt 클래스에서 디자인 클래스를 사용할수있다.
}//MemoEvt
@Override
public void windowClosing(WindowEvent e) {
//System.exit(0);
jm.dispose();
}//windowClosing
private void newWrite(){
//새글
//글이있는지 판단하고 저장여부를 묻고
//저장 - 파일다이얼로그를 호출하든,
//아니오- 텍스트에어리어의 내용을그냥삭제
//취소- 원래의 상태로 보여준다.
TextArea taTemp=jm.getWriteField();
taTemp.setText("");
//프레임의 타이틀바의 내용을 새글로 변경
jm.setTitle("자바메모장 - [ 새글 ]");
}//newWrite
//열기메서드
private void openFile(){
//텍스트에어리어에 내용이 없으면 열기
//텍스트에어리어에 내용이 있으면
//처음열었을때의 내용과 같으면 그냥 열기
//다르면 저장여부 묻기 (예,아니오,취소)
FileDialog open=new FileDialog(jm,"파일열기",FileDialog.LOAD);
open.setVisible(true);
// String path=open.getDirectory();
String file=open.getFile();
//타이틀바의 내용 변경
if(file != null){
jm.setTitle("자바메모장(열기) - [ "+file+" ]");
}//end if
}//private
//저장
private void saveFile(){
//텍스트에어리어의 내용이 있든 없든 저장다이얼로그띄운다.
//열기를 한후에 저장이 눌리면 현재 연파일명으로 덮어쓰기
//를 한다.
saveDialog();
}//saveFile
//저장다이얼로그를 띄우는 메서드
private void saveDialog(){
FileDialog save=new
FileDialog(jm,"파일저장",FileDialog.SAVE);
save.setVisible(true);
// String path=save.getDirectory();
String file=save.getFile();
if(file != null){
jm.setTitle("자바메모장(저장) - [ " +file+" ]");
}//end if
}//saveDialog
//다름이름으로 저장
private void saveAsFile(){
//모든상황에서 저장다이얼로그를 띄운다
saveDialog();
}//saveAsFile
//종료
private void end(){
//텍스트에어리어에 내용이없으면 그냥 종료
//텍스트에어리어에 내용이있으면
//저장여부를 묻는다. (예,아니오,취소)
//파일이열린상태에서 최초열었을때와 변경된 것이없으면
//그냥 종료, 변경된 내용이있으면 저장여부를 묻는다.
//System.exit(0);
jm.dispose();
}//end
//글꼴
private void fontForm(){
//다이얼로그를 상속받은 클래스를 객체화
new Form(jm);
}//form
//도움말
private void memoHelp(){
new Help(jm);
}//memoHelp
public void actionPerformed(ActionEvent ae) {
if(ae.getSource() == jm.getMiNewWrite()){ //새글
newWrite();
}//end if
if(ae.getSource() == jm.getMiFileOpen()){ //열기
openFile();
}//end if
if(ae.getSource() == jm.getMiFileSave()){ //저장
saveFile();
}//end if
if(ae.getSource() == jm.getMiFileSaveAs()){ //다른이름저장
saveAsFile();
}//end if
if(ae.getSource() == jm.getMiMemoEnd()){ //종료
end();
}//end if
if(ae.getSource() == jm.getFont()){ //글꼴
fontForm();
}//end if
if(ae.getSource() == jm.getMiMemoHelp()){ //도움말
memoHelp();
}//end if
}//actionPerformed
}//class
//////////////////////////////////////////////////////글꼴 다이얼로그 생성
package memo;
import java.awt.Button;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Dialog;
import java.awt.Font;
import java.awt.Label;
import java.awt.List;
import java.awt.TextField;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import memo.event.FontFormEvt;
public class Form extends Dialog {
private JavaMemo jm;
private Label output;
private TextField tfFont, tfStyle, tfSize;
private List listFont, listStyle, listSize;
private Button btAccept, btCancel;
public Form(JavaMemo jm) {
super(jm, "글꼴", true);
Label lbFont = new Label("글꼴 (F):");
Label lbStyle = new Label("글꼴 스타일(Y):");
Label lbSize = new Label("크기(S):");
output = new Label("가나다AaBbYyZz");
// /////////////////textFiled///////////////
tfFont = new TextField();
tfStyle = new TextField();
tfSize = new TextField();
// //////////////////list///////////////
listFont = new List();
listStyle = new List();
listSize = new List();
// listFont에 들어갈 아이템 생성
listFont.add("Dialog");
listFont.add("DialogInput");
listFont.add("Monospaced");
listFont.add("Serif");
listFont.add("SansSerif");
// listStyle에 들어갈 아이템 생성
// System.out.println(Font.PLAIN+" "+Font.BOLD);
//인덱스 번호 확인
listStyle.add("보통");
listStyle.add("굵게");
listStyle.add("기울임꼴");
listStyle.add("굵은 기울임꼴");
//listSize에 글꼴의 크기
for(int i=10;i<41;i+=2){
listSize.add(String.valueOf(i));
}
// 다이얼로그의 기본 배치관리자는 BoardLayout이 기본레이아웃
btAccept = new Button("적용");
btCancel = new Button("취소");
setLayout(null);
// 숙제 각 컴포넌트를 배치
// 배치코드를 넣어주세여
// 윈도우종료 이벤트만 처리
// 프레임(부모창),"타이틀바",모달(modal
// 모달 true-자식창이 실행되었을 때 부모창이 선택되지 않는것
// false - 자식창이 실행되었을때 부모창이 선택되는것
this.jm = jm;
// 프레임은 현재 자신의 좌표를 반환하는 메서드가 존재
// X좌표는 getX,Y좌표는 getY()
lbFont.setBounds(15, 35, 100, 20);
lbStyle.setBounds(198, 35, 100, 20);
lbSize.setBounds(335, 35, 100, 20);
tfFont.setBounds(15, 56, 171, 20);
tfStyle.setBounds(198, 56, 126, 20);
tfSize.setBounds(335, 56, 63, 20);
listFont.setBounds(15, 76, 171, 92);
listStyle.setBounds(198, 76, 126, 92);
listSize.setBounds(335, 76, 62, 92);
btAccept.setBounds(405, 56, 80, 25);
btCancel.setBounds(405, 90, 80, 25);
output.setBounds(200, 200, 150, 70);
output.setBackground(new Color(232,232,232));
add(output);
add(lbFont);
add(lbSize);
add(lbStyle);
add(tfFont);
add(tfSize);
add(tfStyle);
add(listFont);
add(listSize);
add(listStyle);
add(btAccept);
add(btCancel);
// 윈도우 종료 이벤트 만 처리 System
FontFormEvt ffe = new FontFormEvt(this);
// 윈도우 이벤트에 객체를 등록 처리할 곳 기술
addWindowListener(ffe);
//리스트 이벤트 등록
listFont.addItemListener(ffe);
listStyle.addItemListener(ffe);
listSize.addItemListener(ffe);
//액션이벤트 등록
btAccept.addActionListener(ffe);
btCancel.addActionListener(ffe);
setBounds(jm.getX() + 50, jm.getY() + 100, 508, 323);
setVisible(true);
}
//getter를 만든 목적은 이벤트처리클래스나(외부클래스에서)
//현재클래스의 인스턴스 필드에 선언한 변수(객체)
public JavaMemo getJm() {
return jm;
}
public Label getOutput() {
return output;
}
public TextField getTfFont() {
return tfFont;
}
public TextField getTfStyle() {
return tfStyle;
}
public TextField getTfSize() {
return tfSize;
}
public List getListFont() {
return listFont;
}
public List getListStyle() {
return listStyle;
}
public List getListSize() {
return listSize;
}
public Button getBtAccept() {
return btAccept;
}
public Button getBtCancel() {
return btCancel;
}
}
////////////////////////////////////////////////////////글꼴 다이얼로그 이벤트 처리
package memo.event;
import java.awt.Font;
import java.awt.List;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import memo.Form;
public class FontFormEvt extends WindowAdapter
implements ActionListener,ItemListener {
Form form;
//이벤트처리클래스가 생성되면 부모창의 텍스트 에어리어의
//글꼴정보를 저장하는 변수
Font jmTextArea;
String temp_font="";//사용자가 선택한 글꼴을 저장
int temp_style=0,temp_size=0;//사용자가 선택한 스타일,크기
public FontFormEvt(Form form){
this.form=form;
//메모장클래스의 텍스트에어리어의 글꼴정보를 얻는다.
jmTextArea=form.getJm().getWriteField().getFont();
temp_font=jmTextArea.getFamily();
temp_style=jmTextArea.getStyle();
temp_size=jmTextArea.getSize();
//디자인클래스의 텍스트필드에 부모창에서 얻어낸 폰트정보를
//설정한다.
form.getTfFont().setText(temp_font);
form.getTfStyle().setText(
form.getListStyle().getItem(temp_style));
form.getTfSize().setText(String.valueOf(temp_size));
}//FontFormEvt
@Override
public void windowClosing(WindowEvent we){
//System.exit(0);
//현재 JVM에 올라와있는 모든 인스턴스를 종료시킨다.
//윈도우컴포넌트에는 dispose메서드가 존재해서
//현재 인스턴스만 종료 시킬 수 있다.
form.dispose();
}//windowClosing
@Override
public void windowClosed(WindowEvent we){
//윈도우 종료시 가장 마지막으로 해야할 일이 있다면
//처리하는 메서드
//System.out.println("windowClosed");
}//windowClosed
//리스트에서 이벤트가 발생했다
public void itemStateChanged(ItemEvent ie) {
//글꼴리스트가 선택
if(ie.getSource() == form.getListFont()){
//리스트의 선택된 값을 텍스트 필드에 기록
//form.getTfFont().setText(form.getListFont().getSelectedItem());
//디자인 클래스에서 텍스트필드를 얻어오고
TextField tfTemp=form.getTfFont();
//디자인 클래스에서 리스트를 얻어오고
List listTemp=form.getListFont();
//리스트에 현재사용자가 선택한 아이템값을 얻어와서
String str=listTemp.getSelectedItem();
//디자인클래스의 텍스트필드에 넣어준다.
tfTemp.setText(str);
//출력라벨에 폰트를 변경하기위해서 변수에 저장
temp_font=str;
}//end if
//스타일리스트가 선택
if(ie.getSource() == form.getListStyle()){
//리스트에 선택된 값을 텍스트필드에 넣어준다.
form.getTfStyle().setText(
form.getListStyle().getSelectedItem());
//출력라벨에 스타일을 변경하기위해서 변수에 저장
temp_style=form.getListStyle().getSelectedIndex();
}//end if
//크기 리스트가 선택
if(ie.getSource() == form.getListSize()){
//리스트에 선택된 값을 텍스트필드에 넣어준다.
form.getTfSize().setText(
form.getListSize().getSelectedItem());
//출력라벨에 크기를 변경하기위해서 변수에 저장
temp_size=Integer.parseInt(
form.getListSize().getSelectedItem());
}//end if
//디자인클래스의 output라벨의 텍스트를 변경해서 미리보기를
//구현한다.
Font font=new Font(temp_font,temp_style,temp_size);
form.getOutput().setFont(font);
}//itemStateChanged
//버튼에서 이벤트가 발생했다.
public void actionPerformed(ActionEvent ae) {
//적용눌리면 부모창의 텍스트에어리어에 현재 설정을
//저장한후 종료
if( ae.getSource() == form.getBtAccept()){
form.getJm().getWriteField().setFont(
new Font(temp_font, temp_style, temp_size));
/* //폰트클래스를 사용자가 선택한 설정으로 생성
Font setting=new Font(temp_font, temp_style, temp_size);
//부모창의 텍스트에어리어를 얻어온 후
TextArea jmWriteField=form.getJm().getWriteField();
//생성된 폰트를 부모창의 텍스트에어리어에 설정한다.
jmWriteField.setFont(setting);
*/
}//end if
//취소가 눌리면 그냥 종료
form.dispose();
}//actionPerformed
}//class
//////////////////////////////////////도움말 다이얼로그 생성
package memo;
import java.awt.Button;
import java.awt.Dialog;
import java.awt.List;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import memo.event.HelpEvt;
public class Help extends Dialog {
public Help(JavaMemo jm){
super(jm,"도움말",true);
String path=
"D:/memo/img.jpg";
ImageIcon img=new ImageIcon(path);
JLabel label=new JLabel(img);
List msg=new List();
msg.add("자바 메모장");
msg.add("");
msg.add("제작자 : James Dean");
msg.add("자바로 만든 메모장 입니다. 아무나 가져다쓰세요");
msg.add("Ver 1.0 라이센스없슴, 업데이트없슴");
Button bt=new Button("종료");
setLayout(null);
label.setBounds(10, 40, 100, 144);
msg.setBounds(115, 40, 300 , 100);
bt.setBounds(350, 150, 50, 20);
add(label);
add(msg);
add(bt);
//이벤트 등록
HelpEvt he = new HelpEvt(this);
//윈도우 이벤트 등록
addWindowListener(he);
//액션 이벤트 등록
bt.addActionListener(he);
setBounds(jm.getX()+100, jm.getY()+100, 425, 200);
setVisible(true);
setResizable(false);
}//Help
}//class
/////////////////////////////////////////////////////다이얼로그 이벤트 처리
package memo.event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import memo.Help;
public class HelpEvt extends WindowAdapter implements ActionListener {
Help help;
public HelpEvt(Help help) {
this.help = help;
}
public void actionPerformed(ActionEvent e) {
help.dispose();
}// acPer
}// class




덧글
하야 2010/04/18 19:46 # 삭제 답글
담아갈게용