import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
/**
* Java记事本
* @author Administrator
*
*/
public class Notepad implements ActionListener{
private JFrame f ;
private JTextArea text;
private JMenuBar mb;
private JMenu fileMenu,editMenu,optionMenu,viewMenu,helpMenu;
private JMenuItem newItem,saveItem,saveasItem,openItem,pageItem,printItem,exitItem;
private JPopupMenu popup;
private JMenuItem undo,cut,copy,paste,all;
/**
* 初始化界面
*/
public void init()
{
f = new JFrame("Java记事本");
text = new JTextArea();
mb = new JMenuBar();
fileMenu = new JMenu("文件");
editMenu = new JMenu("编辑");
optionMenu = new JMenu("格式");
viewMenu = new JMenu("查看");
helpMenu = new JMenu("帮助");
//文件菜单
newItem = new JMenuItem("新建");
newItem.addActionListener(this);
openItem = new JMenuItem("打开");
openItem.addActionListener(this);
saveItem = new JMenuItem("保存");
saveItem.addActionListener(this);
saveasItem = new JMenuItem("另存为");
saveasItem.addActionListener(this);
pageItem = new JMenuItem("页面设置");
printItem = new JMenuItem("打印...");
exitItem = new JMenuItem("退出");
//弹出式菜单
popup = new JPopupMenu();
undo = new JMenuItem("撤销(U)",'U');
cut = new JMenuItem("剪切(X)",'X');
copy = new JMenuItem("复制(C)",'C');
paste = new JMenuItem("粘贴(V)",'V');
all = new JMenuItem("全选(A)",'A');
cut.addActionListener(this);
copy.addActionListener(this);
paste.addActionListener(this);
all.addActionListener(this);
popup.add(undo);
popup.add(cut);
popup.add(copy);
popup.add(paste);
popup.add(all);
text.add(popup);
text.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e)
{
if(e.isPopupTrigger())
{
popup.show(text, e.getX(), e.getY());
}
}
public void mousePressed(MouseEvent e)
{
mouseReleased(e);
}
});
f.setLayout(new BorderLayout());
//把菜单项添加到菜单中
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(saveasItem);
//添加分隔线
fileMenu.addSeparator();
fileMenu.add(pageItem);
fileMenu.add(printItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
//把菜单添加到菜单栏上
mb.add(fileMenu);
mb.add(editMenu);
mb.add(optionMenu);
mb.add(viewMenu);
mb.add(helpMenu);
//把菜单栏添加到窗体上
f.setJMenuBar(mb);
f.add(text);
exitItem.addActionListener(this);
f.setBounds(200,200,500,400);
f.setVisible(true);
}
public static void main(String[] args) {
new Notepad().init();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==cut)
{
this.text.cut();
}
if(e.getSource()==copy)
{
this.text.copy();
}
if(e.getSource()==paste)
{
this.text.paste();
}
if(e.getSource()==all)
{
this.text.selectAll();
}
if(e.getSource() == openItem)
{
//使用文件对话框
FileDialog fd = new FileDialog(f, "打开...");
fd.getFilenameFilter();
fd.setVisible(true);
fd.setLocation(400, 200);
fd.setResizable(false);
char b[] = new char[64];
if(fd.getFile()!=null)
{
try
{ //FileInputStream
FileReader fr = new FileReader(new File(fd.getDirectory()+fd.getFile()))));
int len = fr.read(b);
while(len != -1)
{
String s = String.valueOf(b);
text.append(s);
len = fr.read(b);
text.setCaretPosition(0);
}
fr.close();
}catch(Exception ex)
{
JOptionPane.showMessageDialog(f, ex.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
}
}
}
if (e.getSource() == saveItem)
{
//使用JFileChooser
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
fileChooser.setApproveButtonText("确定");
fileChooser.setDialogTitle("另存为");
int result = fileChooser.showSaveDialog(f);
if (result == JFileChooser.CANCEL_OPTION)
{
JOptionPane.showMessageDialog(f, "您没有选择任何文件!", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
File saveFileName = fileChooser.getSelectedFile();
if (saveFileName == null || saveFileName.getName().equals(""))
JOptionPane.showMessageDialog(f, "不合法的文件名", "不合法的文件名", JOptionPane.ERROR_MESSAGE);
else
{
try
{
FileWriter fw = new FileWriter(saveFileName);
fw.write(text.getText());
fw.close();
}
catch (IOException ex)
{
JOptionPane.showMessageDialog(f, ex.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
}
}
}
}
}