import java.awt.*;
import javax.swing.*;
import javax.swing.filechooser.*;
import java.awt.event.*;
import java.io.*;
public class Note extends JFrame
{
// 변수 선언
JTextArea text;
Container pane;
JMenuBar nb = new JMenuBar();
JMenu file,help;
JMenuItem newI,openI,saveI,closeI,infoI,helpI;
JFileChooser open = new JFileChooser();
public Note()
{
super("MemoNote"); // 부모클래스 생성자 호출
pane=getContentPane(); //
//pane.setLayout(new BorderLayout());
setJMenuBar(nb); // 메뉴바 붙임
// 메뉴 및 메뉴 아이템 생성
file = new JMenu("파일");
help = new JMenu("정보");
file.setMnemonic('F');
help.setMnemonic('I');
newI = new JMenuItem("새파일");
openI = new JMenuItem("열기");
saveI = new JMenuItem("저장");
closeI = new JMenuItem("닫기");
// 메뉴 단축키를 위한 셋팅
newI.setAccelerator(KeyStroke.getKeyStroke('N',Event.CTRL_MASK)); // Ctrl + N
openI.setAccelerator(KeyStroke.getKeyStroke('O',Event.CTRL_MASK)); // Ctrl + O
saveI.setAccelerator(KeyStroke.getKeyStroke('S',Event.CTRL_MASK)); // Ctrl + S
closeI.setAccelerator(KeyStroke.getKeyStroke('Q',Event.CTRL_MASK)); // Ctrl + Q
infoI = new JMenuItem("정보");
infoI.setAccelerator(KeyStroke.getKeyStroke('R',Event.CTRL_MASK)); // Ctrl + R
// 메뉴에 메뉴 아이템 붙임
file.add(newI);
file.add(openI);
file.add(saveI);
file.add(closeI);
help.add(infoI);
nb.add(file);
nb.add(help);
// 메뉴에서 새파일 클릭했을때 이벤트 처리
newI.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
text.setText(""); // text내용을 모두 지운다
}
});
// 메뉴에서 열기 클릭했을때 이벤트 처리
openI.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int re = open.showOpenDialog(Note.this); // 파일열기 다이얼로그 창을 띄운다
if (re==JFileChooser.APPROVE_OPTION)
{
String fN;
String dir;
String str;
File file_open = open.getSelectedFile(); // 선택한 파일명을 가져온다
FileInputStream fis;
ByteArrayOutputStream bo;
try
{
fis = new FileInputStream(file_open); // FileInputStream객체를 생성하고
bo = new ByteArrayOutputStream();
int i = 0;
while ((i = fis.read()) != -1) // 파일이 끝날때까지 읽어서
{
bo.write(i);
}
text.setText(bo.toString()); // 화면에 뿌려준다
fis.close();
bo.close();
}
catch(FileNotFoundException fe)
{}
catch(IOException ie)
{}
}
}
});
//메뉴에서 저장 클릭했을때 이벤트 처리
saveI.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int re = open.showSaveDialog(Note.this);
if (re==JFileChooser.APPROVE_OPTION) // 파일저장 다이얼로그를 띄운다
{
File file_open = open.getSelectedFile(); // 저장할 파일명을 가져온다
try
{
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file_open))); // PrintWriter객체를 생성해서
pw.write(text.getText()); // 화면의 내용을 파일에 쓴다
pw.close();
}
catch(FileNotFoundException ie2)
{}
catch(IOException ie)
{
}
}
}
});
//메뉴에서 닫기를 클릭했을때 이벤트 처리
closeI.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
dispose(); // 창을 닫고
System.exit(0); // 종료한다
}
});
// 메뉴에서 정보를 클릭했을때 이벤트 처리
infoI.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
// 정보를 보여주는 다이얼로그를 띄운다
JOptionPane.showMessageDialog(pane , "Mr han made notepad in 2001/11/27 \n deepplin@kebi.com \n 016-9780-2494");
}
});
text = new JTextArea();
// 화면에 보여질 text들의 상태에 따른 색상 지정
text.setCaretColor(Color.red);
text.setSelectedTextColor(Color.blue);
text.setSelectionColor(Color.pink);
text.setBackground(Color.orange);
pane.add(new JScrollPane(text));
}
public static void main(String[] args)
{
Note note = new Note(); // 객체생성
note.setSize(600,700); // 사이즈 지정
note.setVisible(true); // 화면에 보이게 함
}
}
스윙으로 만든 메모장.. 단축기 정의부터, 이벤트 처리 지글루를 사용하여 GUI
어플리케이션을 만들때 도움이 되는 간단한 예제.

