السلام عليكم
لقد قمت ببرمجة text editor بسيط جدا لكن احتاج بعض المساعدة
لاحظت انه اذا حطيت
JTextArea editor = new JTextArea();
editor.addActionListener(new ...());
يعطيني خطأ انه ما في action listener في هذا الاوبجكت فاستغربت لانه في ال text editor لازم اعرف متى تعدل النص الي جواه عشان اغراض save, save as
و الشغلة الثانية ما عرفت كيف اغلق البرنامج لما يضغط close
و شكرا
/**
* @author: Rakan Alhneiti
* @version: 1.0
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class TextEditor extends JFrame
{
private JMenuBar menu;
private JMenu FileMenu;
private JTextArea editor;
private String Filename;
private boolean isSaved;
public JMenuItem fileNew,fileOpen,fileSave,fileSaveAs, fileClose;
public TextEditor()
{
//initialize JFrame
super("Simple Text Editor");
Container c = getContentPane();
c.setLayout(new BorderLayout());
editor = new JTextArea("",1,1);
c.add(editor,BorderLayout.CENTER);
c.add(new JScrollPane(editor));
//initialize Menu
initMenu();
addMenuItemsActionListener();
Filename = new String("");
isSaved = true;
//Initialize form
setSize(400,400);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void initMenu()
{
//Add file menu and menu items
FileMenu = new JMenu("File");
fileNew = new JMenuItem("New...");
fileOpen = new JMenuItem("Open...");
fileSave = new JMenuItem("Save...");
fileSaveAs = new JMenuItem("Save as...");
fileClose = new JMenuItem("Close");
FileMenu.add(fileNew);
FileMenu.add(fileOpen);
FileMenu.add(fileSave);
FileMenu.add(fileSaveAs);
FileMenu.addSeparator();
FileMenu.add(fileClose);
//add menus to menu bar
menu = new JMenuBar();
menu.add(FileMenu);
this.setJMenuBar(menu);
}
private void addMenuItemsActionListener()
{
Handler MenuHandler = new Handler();
MenuHandler.setObj(this);
fileNew.addActionListener(MenuHandler);
fileOpen.addActionListener(MenuHandler);
fileSave.addActionListener(MenuHandler);
fileSaveAs.addActionListener(MenuHandler);
fileClose.addActionListener(MenuHandler);
}
public String getFilename()
{
return Filename;
}
public void createNewFile()
{
if(isSaved)
{
editor.setText("");
Filename = new String("");
}
else
{
int result = JOptionPane.showOptionDialog(this,"File not saved! Would you like to save now?","Save",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,null);
if(result == JOptionPane.YES_OPTION)
{
saveFile(Filename);
}
else if(result == JOptionPane.NO_OPTION)
{
editor.setText("");
Filename = new String("");
isSaved = true;
}
}
}
public void openFile()
{
if(isSaved)
{
JFileChooser chooser = new JFileChooser();
int result = chooser.showOpenDialog(this);
if(result != JFileChooser.CANCEL_OPTION)
{
//Open file
try
{
File file = chooser.getSelectedFile();
FileReader fin = new FileReader(file);
int c;
String fileInput = new String("");
while((c = fin.read())!=-1)
{
fileInput = fileInput + String.format("%c",(char)c);
}
editor.setText(fileInput);
}
catch(IOException e)
{
JOptionPane.showMessageDialog(this,e.getMessage());
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,e.getMessage());
}
}
}
else
{
int result = JOptionPane.showOptionDialog(this,"File not saved! Would you like to save now?","Save",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,null,null);
if(result == JOptionPane.YES_OPTION)
{
saveFile(Filename);
}
else if(result == JOptionPane.NO_OPTION)
{
isSaved = true;
openFile();
}
}
}
public void saveFile(String fn)
{
if(fn.equals(""))
{
JFileChooser chooser = new JFileChooser();
int result = chooser.showSaveDialog(this);
if(result != JFileChooser.CANCEL_OPTION)
{
try
{
File file = chooser.getSelectedFile();
Filename = new String(file.toURL().toString());
}
catch(IOException e)
{
}
}
else
{
Filename = new String("");
}
}
if(!Filename.equals(""))
{
try
{
File f = new File(Filename.substring(6,Filename.length()));
FileWriter fout = new FileWriter(f);
fout.write(editor.getText());
fout.close();
}
catch(IOException e)
{
JOptionPane.showMessageDialog(this,e.getMessage());
}
}
}
public void saveNewFile()
{
saveFile("");
}
public void close()
{
//System.exit(0);
}
public static void main(String args[])
{
new TextEditor();
}
}
class Handler implements ActionListener
{
TextEditor te;
public void setObj(TextEditor t)
{
te = t;
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==te.fileNew)
{
te.createNewFile();
}
else if(e.getSource()==te.fileOpen)
{
te.openFile();
}
else if(e.getSource()==te.fileSave)
{
te.saveFile(te.getFilename());
}
else if(e.getSource()==te.fileSaveAs)
{
te.saveNewFile();
}
else if(e.getSource()==te.fileClose)
{
te.close();
}
}
}
