web-dev-qa-db-fra.com

Boîte de dialogue Enregistrer le fichier/Ouvrir le fichier, à l'aide de l'éditeur d'interface graphique Swing & Netbeans

Je suis un débutant en Java. Je crée un éditeur de texte simple dans netbeans 7(.3) IDE, en utilisant son éditeur graphique. Le principal problème auquel je suis confronté est que je ne peux pas enregistrer/ouvrir le fichier. J'ai créé le bouton "Enregistrer". Lorsque je laisse tomber le sélecteur de fichier, il se présente sous la forme d'une boîte de dialogue de fichier ouvert normale intégrée à la fenêtre Java sans aucune fonctionnalité. J'ai également essayé de créer un nouveau jFileChooser lorsque le bouton de sauvegarde est cliqué (dans la vue Source), mais cela ne fonctionne pas. 

En un mot, j'ai besoin d'une simple boîte de dialogue d'ouverture/enregistrement. Lorsque vous cliquez sur le bouton "Enregistrer", la boîte de dialogue Enregistrer s'ouvre et enregistre le fichier où l'utilisateur le souhaite, avec le nom, l'extension .rtf ou .txt appropriée. (P.S .: est-il possible de sauvegarder un fichier au format .docx ou .doc en Java?)
Lorsque vous appuyez sur le bouton "Ouvrir", il ouvre un fichier au format .rtf ou .txt (encore une fois, est-il possible d'ouvrir .docx ou .doc en Java?) Via le sélecteur de fichier.

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

Le code est ici: https://docs.google.com/file/d/0B766zz1iJ1LRN2lGRjNtM29vN2M/edit?usp=sharing

11
Pratik Anand

J'ai créé un exemple d'interface utilisateur qui affiche la boîte de dialogue de sauvegarde et d'ouverture de fichier. Cliquez sur le bouton Enregistrer pour ouvrir le dialogue de sauvegarde et cliquez sur le bouton Ouvrir pour ouvrir le dialogue de fichier.

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

Je pense que vous faites face à trois problèmes:

  1. comprendre le FileChooser
  2. écriture/lecture de fichiers
  3. comprendre les extensions et les formats de fichiers

ad 1. Etes-vous sûr que vous avez connecté FileChooser à un panneau/conteneur correct? J'irais pour un tutoriel simple sur cette question et voir si cela fonctionne. C'est la meilleure façon d'apprendre - en faisant des pas en avant petits mais assez grands. Décomposer un problème en ces parties peut parfois être délicat;)

un d. 2. Après avoir enregistré ou ouvert le fichier, vous devez disposer de méthodes pour l'écrire ou le lire. Et encore une fois, il y a de beaux exemples sur ce sujet et il est facile de comprendre le sujet.

un d. 3. Il y a une différence entre un fichier ayant une extension et un format de fichier. Vous pouvez modifier le format de n'importe quel fichier en tout ce que vous voulez, mais cela n'affecte pas son contenu. Cela pourrait simplement rendre le fichier illisible pour l'application associée à une telle extension. Les fichiers TXT sont faciles: vous lisez ce que vous écrivez. XLS, DOCX, etc. nécessitent plus de travail et le framework est généralement le meilleur moyen de les résoudre. 

3
Lenymm

l'enregistrement dans n'importe quel format est très possible. Vérifiez les points suivants http://docs.Oracle.com/javase/tutorial/uiswing/components/filechooser.html

Deuxièmement, ce que vous attendez exactement de la boîte de dialogue de sauvegarde fonctionne de la même manière. L’ouverture d’un fichier doc est très possible- http://srikanthtechnologies.com/blog/openworddoc.html

2
Abhishek Choudhary

Voici un exemple

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