Hallo habe ein Problem und zwar habe ich ein GUI geschrieben in dem man Textdatein un HTNL einlesen kann. Sie verändern und wieder speichern kann. Das Speichern funktioniert das problem liegt bei saveAs.
und der der dazugehörige FileBrowser
Entschuldigung falls das Thema schon irgendwo existiert. Habe es gesucht, oder einfach nur die falsche such Wörter benutzt.
Java:
package file;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.FlowLayout;
import java.awt.Insets;
import java.awt.PopupMenu;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
import javax.swing.text.BadLocationException;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;
import javax.swing.text.StyledDocument;
public class SwingFrame extends JFrame
implements ActionListener{
JLayeredPane desktop;
JInternalFrame internalFrame;
JEditorPane editorPane;
JTextField jtfStatus;
Container contentPane;
//Menüobjekte:
JMenuBar menuBar;
JMenu menuFile, menuOpen, menuHelp;
JMenuItem jmiNew, jmiOpenFile, jmiOpenWeb, jmiClose, jmiSave, jmiSaveAs, jmiHelp, jmiAbout;
private Action actNewFile,actOpenFile,actSaveFile,actOpenWeb,actHelp,actAbout;
//Menu Icons
private JToolBar toolBar;
private JButton jbtbNew, jbtbOpenFile, jbtbOpenWeb, jbtbSave, jbtbHelp, jbtbAbout;
private String iconSize="24";
//Tool Tips with Button
private final String TTT_NEW="Erstelle eine neu Datei";
private final String TTT_OPENFILE="Öffne eine Datei aus dem Filesystem des Rechners";
private final String TTT_WEB="Gib den URL einer Datei ein";
private final String TTT_SAVE="Datei am gleichen Ort speichern";
private final String TTT_HELP="hilfe zu diesem Programm";
private final String TTT_INFO="Info zu diesem Programm";
private KeyStroke keyStroke;
private FileBrowser fileBrowser;
private File file;
public SwingFrame() {
super("SwingFrame mit Menu");
setSize(600,450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane=this.getContentPane();
createMenu();
}
public void createMenu(){
// Menu
menuBar=new JMenuBar();
setJMenuBar(menuBar);
//Datei-Menü
menuFile=new JMenu("Datei");
file=null;
actNewFile=new AbstractAction("Neu...",new ImageIcon("images/New"+iconSize+".gif")){
public void actionPerformed(ActionEvent ae){
file = null;
editorPane.setContentType("text/plain");
editorPane.setText("");
jtfStatus.setText("\"Datei - Neu ...\" gewählt.");
}
};
actNewFile.putValue(Action.SHORT_DESCRIPTION, TTT_NEW);
jmiNew=menuFile.add(actNewFile);
menuOpen=new JMenu("Öffnen");
jmiOpenFile=new JMenuItem("Dateisystem...");
actOpenFile=new AbstractAction("Dateisystem...",new ImageIcon("images/Open"+iconSize+".gif")){
public void actionPerformed(ActionEvent ae){
String str= fileBrowser.chooseText("Datei wählen ","./");
file=fileBrowser.getFile();
editorPane.setContentType("text/plain");
if(str != null){
editorPane.setText(str);
jtfStatus.setText("\"Datei - Öffnen -"+" Dateisystem...\" gewählt");
}else{jtfStatus.setText("Keine Datei ausgewählt!");
}
}
};
//KeyStroke-Objekte (Shortcut) definieren:
keyStroke=KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK);
//Shortcut im Action-Objekt speichern
actOpenFile.putValue(Action.ACCELERATOR_KEY,keyStroke);
actOpenFile.putValue(Action.SHORT_DESCRIPTION, TTT_OPENFILE);
jmiOpenFile=menuOpen.add(actOpenFile);
jmiOpenWeb=new JMenuItem("Web...");
actOpenWeb=new AbstractAction("Web...",new ImageIcon("images/WebComponent"+iconSize+".gif")){
public void actionPerformed(ActionEvent ae){
URL url=fileBrowser.chooseURL("HTML - Seite wählen", "./");
if (url != null) {
try{
editorPane.setPage(url);
file=fileBrowser.getFile();
}catch(IOException ioe){
System.out.println(ioe.toString());
}
jtfStatus.setText("\"Datei - Öffnen - "+" Web...\" gewählt.");
}
}
};
actOpenWeb.putValue(Action.SHORT_DESCRIPTION, TTT_WEB);
jmiOpenWeb=menuOpen.add(actOpenWeb);
menuFile.add(menuOpen);
jmiClose=new JMenuItem("Schließen");
jmiClose.addActionListener(this);
menuFile.add(jmiClose);
//SeparatorLine Menu
menuFile.addSeparator();
actSaveFile=new AbstractAction("Speichern",new ImageIcon("images/Save"+iconSize+".gif")){
public void actionPerformed(ActionEvent ae){
if (file != null){jtfStatus.setText("\"Datei - Speichern\" gewählt.");
save();
}else {
jtfStatus.setText("Umgeleitet auf : \"Datei - Speichern als...\".");
saveAs();
}
}
};
actSaveFile.putValue(Action.SHORT_DESCRIPTION, TTT_SAVE);
jmiSave=menuFile.add(actSaveFile);
jmiSaveAs=new JMenuItem("Speichern als...",new ImageIcon("images/SaveAs"+iconSize+".gif"));
jmiSaveAs.addActionListener(this);
menuFile.add(jmiSaveAs);
menuBar.add(menuFile);
//HelpMenu
menuHelp=new JMenu("?");
actHelp=new AbstractAction("Hilfe",new ImageIcon("images/Help"+iconSize+".gif")){
public void actionPerformed(ActionEvent ae){
showHelp(); // call ShowHelp
jtfStatus.setText("\" ? - Hilfe\" gewählt.");
}
};
actHelp.putValue(Action.SHORT_DESCRIPTION, TTT_HELP);
jmiHelp=menuHelp.add(actHelp);
menuHelp.add(jmiHelp);
menuHelp.addSeparator();
actAbout=new AbstractAction("Info",new ImageIcon("images/About"+iconSize+".gif")){
public void actionPerformed(ActionEvent ae){
jtfStatus.setText("\"? - Info \" gewählt.");
showInfo(); // call ShowInfo
}
};
actAbout.putValue(Action.SHORT_DESCRIPTION, TTT_INFO);
jmiAbout=menuHelp.add(actAbout);
menuHelp.add(jmiAbout);
menuBar.add(menuHelp);
// StatusBar
jtfStatus=new JTextField("");
jtfStatus.setBackground(Color.black);
jtfStatus.setForeground(Color.white);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(BorderLayout.SOUTH, jtfStatus);
editorPane=new JEditorPane();
JScrollPane editorSP=new JScrollPane(editorPane);
panel.add(BorderLayout.CENTER, editorSP);
contentPane.add(BorderLayout.CENTER, panel);
//Tooltips without Button
jmiOpenWeb.setToolTipText("Gib den URL einer Datei ein");
jmiClose.setToolTipText("Schließt die Anwendung ohne weitere Nachfrage");
jmiSaveAs.setToolTipText("Datei zum Speichern auswählen");
//Mnemonic ShortKeys
menuFile.setMnemonic('d');
jmiNew.setMnemonic('N');
menuOpen.setMnemonic('f');
jmiOpenFile.setMnemonic('e');
jmiOpenWeb.setMnemonic('w');
jmiClose.setMnemonic('s');
jmiSave.setMnemonic('p');
jmiSaveAs.setMnemonic('a');
//ToolBar
toolBar=new JToolBar();
jbtbNew=toolBar.add(actNewFile);
jbtbOpenFile = toolBar.add(actOpenFile);
jbtbOpenWeb = toolBar.add(actOpenWeb);
jbtbSave = toolBar.add(actSaveFile);
//ToolBar SeperatorLine
toolBar.addSeparator();
jbtbHelp = toolBar.add(actHelp);
jbtbAbout = toolBar.add(actAbout);
contentPane.add(BorderLayout.NORTH, toolBar);
fileBrowser = new FileBrowser(jtfStatus);
//setVisible
setVisible(true);
}
public void showHelp(){
desktop=getLayeredPane();
JInternalFrame internalFrame = new JInternalFrame("HELP",true,true,false,false);
JTextPane textPane = new JTextPane();
textPane.setContentType("text/html");
textPane.setText("<html><center>Dies ist ein <b>Hilfetext</b> zur Swing-Applikation <i>SwingFrame</i></html>");
internalFrame.add(new JScrollPane(textPane));
internalFrame.setSize(400,300);// high-width Window
internalFrame.setLocation(100,80);// position internalFrame
internalFrame.setVisible(true);
desktop.add(internalFrame, new Integer(100));
}
//Method ShowInfo
public void showInfo(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
desktop=getLayeredPane();
JInternalFrame internalFrame= new JInternalFrame("Info",false,true,false,false);
JTextPane textPane = new JTextPane();
textPane.setContentType("text/html");
textPane.setText("<html><center><b><h2>SwingFrmae-Aplikation</b></h2>" +
"</center><br><center><b></b></center>" +
"<center><b>Version:</b> </center>" +
"<center><b>Projekt:</b></center>" +
"<center><b>Abschnitt:</b></center></html>");
internalFrame.add(new JScrollPane(textPane));
internalFrame.setSize(300,200);
internalFrame.setLocation(150, 140);
internalFrame.setVisible(true);
internalFrame.setFocusable(true);
//internalFrame.setResizable(false);
desktop.add(internalFrame, new Integer(300));
}
public static void main(String[] args){
new SwingFrame();
}
public void actionPerformed(ActionEvent ae) {
if(ae.getSource().equals(jmiClose))System.exit(0);
else if(ae.getSource().equals(jmiSaveAs)){
saveAs();
jtfStatus.setText("\"Datei - Speichern als...\"gewählt");
}
}
private void save(){
fileBrowser.saveFile(file, editorPane.getText());
}
private void saveAs(){
}
und der der dazugehörige FileBrowser
Java:
package file;
import java.io.*;
import java.net.URL;
import javax.swing.JEditorPane;
import javax.swing.JFileChooser;
import javax.swing.JTextField;
public class FileBrowser{
private JTextField jtfStatus;
private JFileChooser fileChooser;
private File file;
public File getFile(){return file;}
public FileBrowser(JTextField jtfStatus){
this.jtfStatus=jtfStatus;
}
public URL chooseURL (String title, String startDir){
URL url = null;
fileChooser = new JFileChooser(new File(startDir));
int returnVal = fileChooser.showDialog(null, title);
if(returnVal == JFileChooser.APPROVE_OPTION){
try {
file = fileChooser.getSelectedFile();
url = file.toURL();
}catch (java.net.MalformedURLException murlex){
jtfStatus.setText("MalformedURLException: " + murlex.getMessage());
}
}else if (returnVal == JFileChooser.CANCEL_OPTION){
jtfStatus.setText("Keine Datei ausgewählt");
}
return url;
}
public String chooseText(String title, String startDir){
file = null;
fileChooser = new JFileChooser(new File(startDir));
int returnVal = fileChooser.showDialog(null, title);
if(returnVal == JFileChooser.APPROVE_OPTION){
file = fileChooser.getSelectedFile();
}else if(returnVal == JFileChooser.CANCEL_OPTION){
jtfStatus.setText("Keine Datei ausgewählt");
return null;
}
FileReader reader = null;
try {
reader = new FileReader(file);
}catch (FileNotFoundException fnfe){
System.out.println("FileNotFoundException: " + fnfe
.getMessage());
}
BufferedReader bufReader = new BufferedReader (reader);
String str;
StringBuffer sb = new StringBuffer();
try{
while((str=bufReader.readLine()) != null){
sb.append(str);
//Zeileschaltung ergänzen
sb.append(System.getProperty("line.seperator"));
}
bufReader.close();
}catch (IOException ioe){
System.out.println("IOException: "+ ioe.getMessage());
}
return sb.toString();
}
public void saveFile(File file, String text){
try{
BufferedWriter bufWriter = new BufferedWriter (new FileWriter (file));
bufWriter.write(text);
bufWriter.flush();
bufWriter.close();
}catch (IOException ioe){
jtfStatus.setText("IOException: " + ioe.getMessage());
}
}
public File saveFileAs(String text, String title, String startDir){
File file;
fileChooser = new JFileChooser(new File(startDir));
fileChooser.setDialogType(JFileChooser.SAVE_DIALOG);
fileChooser.setApproveButtonText(title);
int returnVal = fileChooser.showDialog(jtfStatus, null);
if(returnVal == JFileChooser.APPROVE_OPTION){
file = fileChooser.getSelectedFile();
saveFile(file, text);
jtfStatus.setText("Text in Datei \""+file + "\"gespeichert.");
return file;
}else if(returnVal == JFileChooser.CANCEL_OPTION){
jtfStatus.setText("Speicherdialog abgebrochen");
}
return null;
}
}
Entschuldigung falls das Thema schon irgendwo existiert. Habe es gesucht, oder einfach nur die falsche such Wörter benutzt.