자바(Java) - Frame을 이용하여 간단한 메모장 만들기

안녕하세요

이번 시간에는 자바에서 Frame을 이용하여 메모장을 만드는 것을 해봅니다.

먼저 제가 만든 결과 화면은 아래와 같습니다.




크게 메뉴는 파일(F), 색상(C)으로 두 개 있고, 각각의 메뉴에 세부 메뉴가 있습니다.

자 그럼 이제 소스코드를 한번 보시죠~


public class MyNotePad extends Frame implements ActionListener(){
 TextArea ta;
 MenuBar bar; 
 menu mnFile, mnColor, mnNew, mnFntColor;
 MenuItem miOpen, miSave, miExit;
 MenuItem miBgY, miBgG, miFgR, miFgB; // 배경, 글자색
 Label lb;
public MyNotePad(){
 super(":::MyNotePad v1.1:::");
 ta=new TextArea();
 add(ta, "Center");
 lb=new Label("Status");
 add(lb, "South");
 //1.메뉴바를 Frame에 붙인다.
 //메뉴바를 붙일 때는 setMenuBar()를 이용
 bar = new MenuBar();
 setMenuBar(bar);
 //2.메뉴를 생성해서 메뉴바에 붙인다.
 mnFile=new Menu("파일(F)");
 mnColor=new Menu("색상(C)");
 bar.add(mnFile); bar.add(mnColor);
 //MenuShortcut은 단축키 지정
 miOpen=new MenuItem("열기(O)", new MenuShortcut('O'));
 MenuShortCut ms = new MenuShortCut('S');
 miSave = new MenuItem("저장(S)", ms);
 miExit = new MenuItem("끝내기(X)", new MenuShortcut('X', true);
 //구분선 주기
 mnFile.addSeparator();
 mnFile.add(Exit);
 mnFile.addSeparator();
 //서브메뉴 만들기
 //메뉴에 메뉴를 붙이면 서브 메뉴가 된다.'
 mnNew = new Menu("New(N)");
 mnFile.add(mnNew);
 mnNew.add(new MenuItem("New File");
 mnNew.add(new MenuItem("Java Project");
 mnNew.add("Package"); //문자열로 메뉴 아이템을 등록해도 됨
 //색상의 상단메뉴
 miBgY = new MenuItem("배경색-Yellow"); miBgG = new MenuItem("배경색-Gray");
 mnFntColor = new Menu("글자색");
 mnColor.add(miBgY); mnColor.add(miBgG);
 mnColor.addSeparator(); mnColor.add(mnFntColor);
 //색상의 서브메뉴
 miFgR = new MenuItem("Red"); miFgB = new MenuItem("Blue");
 mnFntColor.add(miFgR); mnFntColor.add(miFgB);
 mnFntColor.addSeparator();
 mnFntColor.add(new MenuItem("Reset");
 //4) 메뉴아이템에 리스너 부착
 miOpen.addActionListener(this);
 miSave.addActionListener(this);
 miExit.addActionListener(this);
 miBgY.addActionListener(this);
 miBgG.addActionListener(this);
 miFgR.addActionListener(this);
 miFgB.addActionListener(this);
 //Reset 리스너 부착
 mnFntColor.addActionListener(this);
     
 }//Constructor()------
 
 @Override
 public void actionPerformed(ActionEvent e){
  Object o=e.getSource();
  //reset 처리(문자열 비교)
  String cmd=e.getActionCommand();
  if(cmd.equals("Reset")){
   ta.setBackground(Color.white);
   ta.setForeground(Color.black);
  }
  if(o==miExit){
   //시스템 종료 코드
   System.exit(0);
  }else if(o==miOpen){
   //FileDialog 객체를 생성해서 setVisible(true)메소드를 호출한다.
   //Frame f1 = new Frame();
   FileDialog fd = new FileDialog(this);
   fd.setVisible(true);
  
   //fd에서 선택한 파일의 절대경로를 만들어서 lb에 보여주세요.
   String dir=fd.getDirectory(); // 상위 디렉토리 경로
   String fname=fd.getFile(); // 파일명
   lb.setText(dir+fname);
   String filename=dir+fname;
   //FileReadExceptionTest(제가 직접 클래스 파일로 작성했습니다) 재사용하자
   try{
    String contents=FileReadExceptionTest2.readFile(filename)
    ta.setText(contents);
   }catch(FileNotFoundException ee){
    JOptionPane.showMessageDialog(ta, filename+"파일을 찾을 수 없습니다");
   }catch(IOException ee){
    ta.setText("입출력 오류 발생");
   }catch(Exception ee){
    lb.setText("기타 오류 발생");
   }
  }else if(o==miSave){
   //save는 딱히 구현하지 않았습니다(나중에 추가하겠습니다)
  }else if(o==miBgY){
   ta.setBackground(Color.yellow);
  }else if(o==miBgG){
   ta.setBackground(Color.gray);
  }else if(o==miFgR){
   ta.setForeground(Color.red);
  }else if(o==miFgB){
   ta.setForeground(Color.blue);
  }
 }
  
 public static void main(String args[]){
  MyNotePad my = new MyNotePad();
  my.setSize(500,500);
  my.setVisible(true);
 }
}

댓글 없음:

댓글 쓰기