Сохраните файл/открыть файл диалоговое окно, используя Swing & Netbeans GUI editor
Я начинаю с Java. Я делаю простой текстовый редактор в netbeans 7 (.3) IDE, используя его графический редактор. Основная проблема, с которой я сталкиваюсь, заключается в том, что я не могу заставить ее сохранять/открывать файл. Я создал кнопку "Сохранить". Когда я отбрасываю выбор файла, он появляется как обычное диалоговое окно открытого файла, встроенное в окно java, без каких-либо функций. Я также попытался создать новый jFileChooser, когда нажата кнопка сохранения (в представлении "Источник" ), но она не работает.
Вкратце, мне нужно простое диалоговое окно open/save. Когда нажимается кнопка "Сохранить", открывается диалоговое окно сохранения и сохраняет файл везде, где пользователь выбирает любое имя и расширение .rtf или .txt. (P.S.: можно ли сохранить файл в .docx или .doc в Java?)
Когда нажимается "Open" 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
Ответы
Ответ 1
Я создал образец интерфейса, который показывает диалог сохранения и открытия файла. Нажмите кнопку "Сохранить", чтобы открыть диалоговое окно сохранения, и нажмите кнопку "Открыть", чтобы открыть диалоговое окно файла.
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);
}
}
Ответ 2
Я думаю, вы сталкиваетесь с тремя проблемами:
- понимание FileChooser
- записи/чтения файлов
- понимание расширений и форматов файлов
ad 1. Вы уверены, что подключили FileChooser к правильной панели/контейнеру? Я бы пошел на простой учебник по этому вопросу и посмотрел, работает ли он. Это лучший способ учиться - делая небольшие, но достаточно большие шаги вперед. Нарушение проблемы в таких частях иногда может быть сложным;)
объявления. 2. После сохранения или открытия файла у вас должны быть методы для записи или чтения файла. И снова есть довольно аккуратные примеры по этому вопросу, и это легко понять тему.
объявления. 3. Существует разница между файлом, имеющим расширение и формат файла. Вы можете изменить формат любого файла на все, что захотите, но это не повлияет на его содержимое. Он может просто сделать файл нечитаемым для приложения, связанного с таким расширением. Файлы TXT просты - вы читаете, что пишете. XLS, DOCX и т.д. Требуют больше работы, и обычно это лучший способ справиться с ними.
Ответ 3
экономия в любом формате очень возможна.
Проверьте следующее-
http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html
В-третьих, что именно вы ожидаете, что диалог сохранения работает, он работает так,
Открытие документа doc очень возможно -
http://srikanthtechnologies.com/blog/openworddoc.html
Ответ 4
Вот пример
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();
}
}
}