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
어플리케이션을 만들때 도움이 되는 간단한 예제.

Posted by 티엘로