Hi, napisałem coś na wzór prostego edytora tekstu. Problem w tym, że nie dochodzi do zapisania zawartość JTextArea do pliku.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication37;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
class Frame extends JFrame {
public Frame() {
setSize(350, 350);
setTitle("Edytor");
setDefaultCloseOperation(EXIT_ON_CLOSE);
addTextArea();
createMenu();
}
public String readFile(File ff) throws IOException{
BufferedReader outf = new BufferedReader(new InputStreamReader(new FileInputStream(ff)));
String text = "";
String line;
while((line = outf.readLine()) != null ) {
text += line + System.getProperty("line.separator");
}
outf.close();
return text;
}
public void saveFile(File ifile, String text) throws FileNotFoundException {
String[] lines = text.split(System.getProperty("line.separator"));
PrintStream inf = new PrintStream(ifile);
for (int i = 0; i < lines.length; i++) {
inf.println(lines[i]);
}
inf.close();
}
public void addTextArea() {
Container box = getContentPane();
editText = new JTextArea();
sPanel = new JScrollPane(editText);
box.add(sPanel);
editText.setLineWrap(true);//zawijanie
editText.setWrapStyleWord(true);//dzielenie słówn
}
public void createMenu() {
menubar.add(file);
file.add(newfile);
newfile.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String namefile = JOptionPane.showInputDialog(null, "podaj scieżkę i nazwę do pliku");
f = new File(namefile);
try {
if (f.createNewFile()) {
JOptionPane.showMessageDialog(null, "Pomyślene utworzenie pliku");
}
else
JOptionPane.showMessageDialog(null, "Bład utworzenie pliku");
} catch (IOException ex) {}
}
});
file.add(open);
open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(false);
if(chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
try {
File f2 = chooser.getSelectedFile();
editText.setText(readFile(f2));
} catch (IOException ex) {}
}
}
});
file.add(save);
save.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
saveFile(f, editText.getText());
} catch (FileNotFoundException ex) {}
}
});
file.addSeparator();
file.add(exit);
menubar.add(edit);
edit.add(cut);
edit.add(copy);
edit.add(paste);
setJMenuBar(menubar);
}
private File f;
private JScrollPane sPanel;
private JTextArea editText;
private JMenuBar menubar = new JMenuBar();
private JMenu file = new JMenu("Plik");
private JMenuItem newfile = new JMenuItem("Nowy");
private JMenuItem open = new JMenuItem("Otwórz");
private JMenuItem save = new JMenuItem("Zapisz");
private JMenuItem exit = new JMenuItem("Koniec");
private JMenu edit = new JMenu("Edytuj");
private JMenuItem cut = new JMenuItem("Wytnij");
private JMenuItem copy = new JMenuItem("Kopiuj");
private JMenuItem paste = new JMenuItem("Wklej");
}
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Frame x = new Frame();
x.setVisible(true);
}
});
}
}
Będę wdzięczny za pomoc w ustaleniu gdzie się pomyliłem :).
Pozdrawiam!