자바 메모장을 만들었는데..

자바 메모장을 만들었는데..

작성일 2012.08.23댓글 1건
    게시물 수정 , 삭제는 로그인 필요

저장을 하는법을 몰라서 다른이름으로 저장이랑 같게 만들었습니다...

실제 메모장처럼 저장을 맨처음만 이름을 정해서 저장하고 그다음부터 저장을 누르면 알아서 아무창이 안뜨게 저장할려면 어떻게 해야될까요? ㅠㅠ

자바 고수님들 도와주세요

package kr.ac.snut.io;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Notepad extends JFrame implements ActionListener{
    JTextArea output;
    JScrollPane scrollPane;
    JMenuBar menuBar;
    JMenu menu, submenu;
    JMenuItem menuItem1, menuItem2,fnew,fopen,fsave,fsaveas,fexit;
    JRadioButtonMenuItem rbMenuItem1, rbMenuItem2;
    JCheckBoxMenuItem cbMenuItem1, cbMenuItem2;
    JFileChooser fc;
    public Notepad() {
     super("메모장");
     fc = new JFileChooser();
        menuBar = new JMenuBar();   
        submenu = new JMenu("파일");
        fnew = new JMenuItem("새 글");
        fopen = new JMenuItem("불러오기");
        fsave = new JMenuItem("저장하기");
        fsaveas = new JMenuItem("다른 이름으로 저장");
        fnew.addActionListener(this);
        fopen.addActionListener(this);
        fsave.addActionListener(this);
        fsaveas.addActionListener(this);
        submenu.add(fnew);
        submenu.add(fopen);       
        submenu.addSeparator();
        submenu.add(fsave);
        submenu.add(fsaveas);
        submenu.addSeparator();
        menuBar.add(submenu);
  output = new JTextArea(5, 30);
        scrollPane = new JScrollPane(output); 
  add(scrollPane, "Center");
  setJMenuBar(menuBar);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setSize(550, 550);
        setVisible(true);  
    }
    public static void main(String[] args) {      
        Notepad demo = new Notepad();              
    }
 @Override
 public void actionPerformed(ActionEvent e) {
   Object o = (JMenuItem)e.getSource();
   if(o == fnew){
    output.setText("");
    setTitle("");
   }
   else if(o == fopen){
    int returnVal = fc.showOpenDialog(this);
             if (returnVal == JFileChooser.APPROVE_OPTION) {
                 File file = fc.getSelectedFile();
                 this.setTitle(file.getName());
                 output.setText("");
           try{
            FileReader fr = new FileReader(file);
           BufferedReader br = new BufferedReader(fr);
           for(String str; (str = br.readLine()) != null; ){
            output.append(str);
            output.append("\n");
           }
          
           br.close();
           }catch(Exception e1)
           {
            e1.printStackTrace();
           }
             }
   }
   else if(o == fsave){
   
    int returnVal = fc.showSaveDialog(this);
             if (returnVal == JFileChooser.APPROVE_OPTION) {
                 File file = fc.getSelectedFile();
this.setTitle(file.getName());
                 try{
           FileWriter fw = new FileWriter(file);
           BufferedWriter bw = new BufferedWriter(fw);
           String s = output.getText();
           
            bw.write(s);
            bw.newLine();
          
           bw.close();
                 }catch(Exception e3){
                  e3.printStackTrace();
                 }
             }
   }
   else if(o == fsaveas){
    int returnVal = fc.showSaveDialog(this);
             if (returnVal == JFileChooser.APPROVE_OPTION) {
                 File file = fc.getSelectedFile();
this.setTitle(file.getName());
                 try{
           FileWriter fw = new FileWriter(file.getName());
           BufferedWriter bw = new BufferedWriter(fw);
           String s = output.getText();
           
            bw.write(s);
            bw.newLine();
          
           bw.close();
                 }catch(Exception e3){
                 
                 }
             }
 
   else{
     System.exit(0);
    }
   }
 }
}
 



profile_image 익명 작성일 -

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class Notepad extends JFrame implements ActionListener {
 JTextArea output;
 JScrollPane scrollPane;
 JMenuBar menuBar;
 JMenu menu, submenu;
 JMenuItem menuItem1, menuItem2, fnew, fopen, fsave, fsaveas, fexit;
 JRadioButtonMenuItem rbMenuItem1, rbMenuItem2;
 JCheckBoxMenuItem cbMenuItem1, cbMenuItem2;
 JFileChooser fc;
 File file;  <------- 일단 이 부분을 전역변수로 설정했습니다.

이유는 fopen에서 불러온 파일의 정보가 다른곳에서도 쓰일 필요가 있기 때문입니다.

 

 public Notepad() {
  super("메모장");
  fc = new JFileChooser();
  menuBar = new JMenuBar();
  submenu = new JMenu("파일");
  fnew = new JMenuItem("새 글");
  fopen = new JMenuItem("불러오기");
  fsave = new JMenuItem("저장하기");
  fsaveas = new JMenuItem("다른 이름으로 저장");
  fnew.addActionListener(this);
  fopen.addActionListener(this);
  fsave.addActionListener(this);
  fsaveas.addActionListener(this);
  submenu.add(fnew);
  submenu.add(fopen);
  submenu.addSeparator();
  submenu.add(fsave);
  submenu.add(fsaveas);
  submenu.addSeparator();
  menuBar.add(submenu);
  output = new JTextArea(5, 30);
  scrollPane = new JScrollPane(output);
  add(scrollPane, "Center");
  setJMenuBar(menuBar);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setSize(550, 550);
  setVisible(true);
 }

 public static void main(String[] args) {
  Notepad demo = new Notepad();
 }

 @Override
 public void actionPerformed(ActionEvent e) {
  Object o = (JMenuItem) e.getSource();
  if (o == fnew) {
   output.setText("");
   setTitle("메모장");   <---------- 새 글 쓰기시 title을 "메모장"으로 설정하도록 하였습니다.

이유는 저장시 처음 저장하는지 기존 파일에 저장하는지 판단하기

위해서 입니다.

  } else if (o == fopen) {
   int returnVal = fc.showOpenDialog(this);
   if (returnVal == JFileChooser.APPROVE_OPTION) {
    file = fc.getSelectedFile();   <------ 위에 전역변수로 설정했기 때문에 앞의 File 부분을 지워줍니다.
    this.setTitle(file.getName());
    output.setText("");
    try {
     FileReader fr = new FileReader(file);
     BufferedReader br = new BufferedReader(fr);
     for (String str; (str = br.readLine()) != null;) {
      output.append(str);
      output.append("\n");
     }

     br.close();
    } catch (Exception e1) {
     e1.printStackTrace();
    }
   }
  } else if (o == fsave) {
   if (!this.getTitle().equals("메모장")) {   <----------- 파일이 처음 만들어진것이 아닌 불러왔거나 이미

저장된 파일이라면

    try {
     FileWriter fw = new FileWriter(file);
     BufferedWriter bw = new BufferedWriter(fw);
     String s = output.getText();
     
     bw.write(s);
     bw.newLine();

     bw.close();
    } catch (Exception e3) {
     e3.printStackTrace();
    }
   } else {    <----------- 처음 저장시는 기존 코드와 동일합니다.
    int returnVal = fc.showSaveDialog(this);
    if (returnVal == JFileChooser.APPROVE_OPTION) {
     file = fc.getSelectedFile();  <------------ 마찬가지로 전역변수로 설정했기에 File을 지워줍니다.
     this.setTitle(file.getName());
     try {
      FileWriter fw = new FileWriter(file);
      BufferedWriter bw = new BufferedWriter(fw);
      String s = output.getText();
 
      bw.write(s);
      bw.newLine();
 
      bw.close();
     } catch (Exception e3) {
      e3.printStackTrace();
     }
    }
   }
  } else if (o == fsaveas) {
   int returnVal = fc.showSaveDialog(this);
   if (returnVal == JFileChooser.APPROVE_OPTION) {
    file = fc.getSelectedFile();  <---- 위와 동일
    this.setTitle(file.getName());
    try {
     FileWriter fw = new FileWriter(file.getName());
     BufferedWriter bw = new BufferedWriter(fw);
     String s = output.getText();

     bw.write(s);
     bw.newLine();

     bw.close();
    } catch (Exception e3) {

    }
   }

   else {
    System.exit(0);
   }
  }
 }
}

 

수고하세요.

자바 메모장을 만들었는데..

... 실제 메모장처럼 저장을 맨처음만 이름을 정해서... ㅠㅠ 자바 고수님들 도와주세요 package kr.ac.snut.io; import java.awt.event....

메모장으로 홈피를 만들었는데.. 태그를...

... 메모장으로 어느정도 홈페이지의 툴을 만드셨으면 이제 태그로 뭔가를 이쁘게 꾸미거나 방문자들의 시선을 끌 수 있는 액션을 주고 싶으실텐데 자바스크립트가 많이...

메모장으로 홈피만들때 메뉴링크가..

... 메모장 태그로 홈페이지 만들때 말이에요.. 태그를 좌우2단태그로 만들었는데.. (왼쪽편에 메뉴란이 짧게 있고... 태그나 자바, 홈페이지.. 잘 아시는 고수님들이 ;ㅁ; (현자...

서버를 만들었는데 Spigot 1.12.2 라고...

마인크래프트 서버를 만들어야해서 서버를 만들었는데 Spigot 1.12.2 라고 되있고... 경우, 메모장에 적은 내용을 다시 점검해보세요.) (자바를 설치하지 않거나 자바 경로를...

자바 프로그램 삽입 질문요~

... 거기에서 메뉴중에 '메모장' 과 '계산기'가 있는데요 메인 이랑 메모장 계산기 다 만들었는데 이걸 어케 연동해야 할지를 모르겠네요 메모장을 클릭하믄 제가 맹근...

제가 서버를 만들었는데 만두민님의...

제가 서버를 만들었는데 만두민님의 영상을 보고 만들었어요 하라는대로 다했는데... 경우, 메모장에 적은 내용을 다시 점검해보세요.) (자바를 설치하지 않거나 자바...