10

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

簡単に言えば、単純な開く/保存するダイアログ ボックスが必要です。[保存] ボタンを押すと、保存ダイアログ ボックスが開き、ユーザーが選択した任意の場所に、任意の名前と .rtf または .txt 拡張子でファイルが保存されます。(PS: Java でファイルを .docx または .doc で保存することは可能ですか?)
「開く」ボタンを押すと、.rtf または .txt でファイルが開きます (ここでも、.docx または.doc in 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

4

4 に答える 4

21

ファイルの保存と開くダイアログを表示するサンプル UI を作成しました。保存ボタンをクリックして保存ダイアログを開き、開くボタンをクリックしてファイルダイアログを開きます。

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);
    }
}
于 2013-03-29T14:15:09.340 に答える
3

次の 3 つの問題に直面していると思います。

  1. FileChooser を理解する
  2. ファイルの書き込み/読み取り
  3. 拡張子とファイル形式を理解する

広告 1. FileChooser を正しいパネル/コンテナに接続したことは確かですか? この問題に関する簡単なチュートリアルに行き、それが機能するかどうかを確認します。それが学ぶための最良の方法です - 小さくても十分に大きな一歩を踏み出すことによって。問題をそのような部分に分解するのは難しい場合があります;)

広告。2. ファイルを保存または開くと、ファイルを読み書きするメソッドが必要になります。繰り返しますが、この問題についてはかなりきちんとした例があり、トピックを理解しやすいです。

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

于 2013-03-29T13:24:51.743 に答える
2

任意の形式で保存することは非常に可能です。以下を確認してください - http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html

2番目に、保存ダイアログが機能することを正確に期待しているものは、そのように機能します.docファイルを開くことは非常に可能です- http://srikanthtechnologies.com/blog/openworddoc.html

于 2013-03-29T13:51:18.647 に答える
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();
        }
    }
}
于 2017-06-21T17:50:40.523 に答える