2013-03-29 20 views
11

私はJavaの初心者です。私はGUIエディタを使って、netbeans 7(.3)IDEで簡単なテキストエディタを作っています。私が直面する主な問題は、ファイルを保存/開くことができないということです。私は "保存"ボタンを作成しました。私がファイル・チューザーをドロップすると、Javaウィンドウに埋め込まれた通常のオープン・ファイル・ダイアログ・ボックスとして機能しません。保存ボタンがクリックされたとき(ソースビュー内で)新しいjFileChooserを作成しようとしましたが、動作しません。

SwingとNetbeansのGUIエディタを使用してファイルを保存/ファイルを開くダイアログボックス

簡単に言えば、私は単純なオープン/保存ダイアログボックスが必要です。 [保存]ボタンを押すと、保存ダイアログボックスが開き、ユーザーが任意の名前と.rtfまたは.txt拡張子を使用してファイルを保存します。 (PS:Javaで.docxまたは.docにファイルを保存することは可能ですか?)
「開く」btnを押すと、.rtfまたは.txt形式のファイルが開きます(もう一度開くことができます)。 docxまたは.docをJavaで使用していますか?)。

private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {           
    JFileChooser saveFile = new JFileChooser(); 
    if saveFile.showSaveDialog(modalToComponent) == JFileChooser.APPROVE_OPTION { 
     File xyz = saveFile.getSelectedFile(); 
    } 
} 

コードはここにある:https://docs.google.com/file/d/0B766zz1iJ1LRN2lGRjNtM29vN2M/edit?usp=sharing

+0

ポストは、いくつかのコード我々はいくつかのコード – Aboutblank

+0

あり、そのコードは、まったく助けにはなりませんでした。.. –

+0

ええを参照してくださいする必要があり下さい – Tom

答えて

19

私は、サンプルのUIを作成しましたファイルの保存と開くダイアログが表示されます。保存ボタンをクリックして保存ダイアログを開き、開くボタンをクリックしてファイルダイアログを開きます。それはhtmlタグ付きフルだとして、ここでは

import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class FileChooserEx { 
    public static void main(String[] args) { 
     Runnable r = new Runnable() { 

      @Override 
      public void run() { 
       new FileChooserEx().createUI(); 
      } 
     }; 

     EventQueue.invokeLater(r); 
    } 

    private void createUI() { 
     JFrame frame = new JFrame(); 
     frame.setLayout(new BorderLayout()); 

     JButton saveBtn = new JButton("Save"); 
     JButton openBtn = new JButton("Open"); 

     saveBtn.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       JFileChooser saveFile = new JFileChooser(); 
       saveFile.showSaveDialog(null); 
      } 
     }); 

     openBtn.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       JFileChooser openFile = new JFileChooser(); 
       openFile.showOpenDialog(null); 
      } 
     }); 

     frame.add(new JLabel("File Chooser"), BorderLayout.NORTH); 
     frame.add(saveBtn, BorderLayout.CENTER); 
     frame.add(openBtn, BorderLayout.SOUTH); 
     frame.setTitle("File Chooser"); 
     frame.pack(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
    } 
} 
+0

これはどのようにしてWindowsスタイルで動作させるのですか? –

+0

@AalaaMohamedウィンドウスタイル??? – Amarnath

+1

私は、このコードは、Mac上のもののようなデジログボックスを作るように、Windowsオペレーティングシステム上のジガログボックススタイルを意味します。 –

3

は、私はあなたが三つの問題に直面思う:拡張子とファイル形式を理解

  • 書き込み/読み出しファイル
  • チューザを理解

    ad 1. FileChooserを正しいパネルまたはコンテナに接続してもよろしいですか?私はこの問題に関する簡単なチュートリアルに行き、それが機能するかどうかを見ていきたいと思います。これは、小さくても十分な大きさのステップを進めることで、学習する最善の方法です。そのような部分への問題の打ち破りは時々難しいかもしれません;)

    ad。 2.ファイルを保存または開いたら、ファイルを書き込むか読み取る方法が必要です。もう一度、この問題に関するきちんとした例があり、トピックを理解するのは簡単です。

    ad。 3.拡張子とファイル形式を持つファイルには違いがあります。任意のファイルの形式を任意のものに変更できますが、内容には影響しません。そのような拡張に関連付けられたアプリケーションでは、ファイルが読み込めなくなることがあります。 TXTファイルは簡単です - あなたが書いたものを読む。 XLS、DOCXなどはより多くの作業を必要とし、通常フレームワークはこれらに取り組むための最良の方法です。

  • 0

    を例

    private void doOpenFile() { 
        int result = myFileChooser.showOpenDialog(this); 
    
        if (result == JFileChooser.APPROVE_OPTION) { 
         Path path = myFileChooser.getSelectedFile().toPath(); 
    
         try { 
          String contentString = ""; 
    
          for (String s : Files.readAllLines(path, StandardCharsets.UTF_8)) { 
           contentString += s; 
          } 
    
          jText.setText(contentString); 
    
         } catch (IOException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
        } 
    } 
    
    private void doSaveFile() { 
        int result = myFileChooser.showSaveDialog(this); 
    
        if (result == JFileChooser.APPROVE_OPTION) { 
         // We'll be making a mytmp.txt file, write in there, then move it to 
         // the selected 
         // file. This takes care of clearing that file, should there be 
         // content in it. 
         File targetFile = myFileChooser.getSelectedFile(); 
    
         try { 
          if (!targetFile.exists()) { 
           targetFile.createNewFile(); 
          } 
    
          FileWriter fw = new FileWriter(targetFile); 
    
          fw.write(jText.getText()); 
          fw.close(); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 
    } 
    
    関連する問題