web-dev-qa-db-ja.com

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

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

簡単に言うと、単純なオープン/保存ダイアログボックスが必要です。 「保存」ボタンを押すと、保存ダイアログボックスが開き、ユーザーが選択した場所にファイルを保存します。名前と拡張子は.rtfまたは.txtです。 (PS:Javaで.docxまたは.docにファイルを保存することは可能ですか?)
[Open] btnを押すと、ファイルチューザーを介して.rtfまたは.txtのファイル(Javaで.docxまたは.docを開くことは可能ですか?)が開きます。

    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

10
Pratik Anand

ファイルを保存して開くダイアログを表示するサンプル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);
    }
}
20
Amarnath

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

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

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

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

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

3
Lenymm

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

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

2

ここに例があります

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();
        }
    }
}
0
norway whale