it-swarm.com.de

Datei speichern/Datei öffnen mit dem Swing & Netbeans GUI-Editor

Ich bin ein Anfänger von Java. Ich mache einen einfachen Texteditor in netbeans 7(.3) IDE und benutze seinen GUI-Editor. Das Hauptproblem, dem ich gegenüberstehe, ist, dass ich die Datei nicht speichern/öffnen kann. Ich habe die Schaltfläche "Speichern" erstellt. Wenn ich die Dateiauswahl ablege, wird sie als normal geöffnetes Dateidialogfeld angezeigt, das in das Java-Fenster ohne jegliche Funktionalität eingebettet ist. Ich habe auch versucht, einen neuen jFileChooser zu erstellen, wenn auf die Schaltfläche "Speichern" geklickt wird (in der Quellansicht). Dies funktioniert jedoch nicht. 

Kurz gesagt, ich brauche ein einfaches Öffnen/Speichern-Dialogfeld. Wenn Sie auf die Schaltfläche "Speichern" klicken, wird das Dialogfeld "Speichern" geöffnet, und die Datei wird an beliebiger Stelle mit beliebigem Namen und mit der Erweiterung .rtf oder .txt gespeichert. (P.S .: Ist es möglich, eine Datei in .docx oder .doc in Java zu speichern?)
Wenn das Btn "Öffnen" gedrückt wird, wird eine Datei in RTF oder TXT geöffnet (kann DOCX oder DOC in Java erneut geöffnet werden?) Über die Dateiauswahl.

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

Der Code ist hier: https://docs.google.com/file/d/0B766zz1iJ1LRN2lGRjNtM29vN2M/edit?usp=sharing

11
Pratik Anand

Ich habe eine Beispielbenutzeroberfläche erstellt, die den Dialog zum Speichern und Öffnen von Dateien zeigt. Klicken Sie auf die Schaltfläche Speichern, um den Speicherdialog zu öffnen, und klicken Sie auf die Schaltfläche Öffnen, um den Dateidialog zu öffnen.

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);
    }
}
19
Amarnath

Ich denke, Sie haben drei Probleme:

  1. den FileChooser verstehen
  2. dateien schreiben/lesen
  3. erweiterungen und Dateiformate verstehen

anzeige 1. Sind Sie sicher, dass Sie den FileChooser mit einem korrekten Panel/Container verbunden haben? Ich würde ein einfaches Tutorial zu diesem Thema machen und sehen, ob es funktioniert. Das ist der beste Weg zu lernen - indem Sie kleine, aber ausreichend große Schritte machen. Das Aufteilen eines Problems in solche Teile kann manchmal schwierig sein;)

anzeige. 2. Nachdem Sie die Datei gespeichert oder geöffnet haben, sollten Sie über Methoden zum Schreiben oder Lesen der Datei verfügen. Und wieder gibt es einige hübsche Beispiele zu diesem Thema und es ist leicht zu verstehen.

anzeige. 3. Es gibt einen Unterschied zwischen einer Datei mit der Erweiterung und dem Dateiformat. Sie können das Format jeder Datei beliebig ändern, was sich jedoch nicht auf den Inhalt auswirkt. Möglicherweise wird die Datei für die mit einer solchen Erweiterung verknüpfte Anwendung nur unlesbar. TXT -Dateien sind einfach - Sie lesen, was Sie schreiben. XLS, DOCX usw. erfordern mehr Arbeit und normalerweise sind Rahmenbedingungen die beste Lösung, um diese Probleme zu lösen. 

3
Lenymm

speichern in einem beliebigen Format ist sehr viel möglich . Überprüfen Sie folgendes - http://docs.Oracle.com/javase/tutorial/uiswing/components/filechooser.html

Zweitens: Was genau Sie erwarten, dass der Speicherdialog funktioniert, funktioniert folgendermaßen: Das Öffnen einer Doc-Datei ist sehr gut möglich. - http://srikanthtechnologies.com/blog/openworddoc.html

2

Hier ist ein Beispiel

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