import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.datatransfer.*;
import java.awt.event.*;
import java.io.*;
public class Notbook extends JFrame {
static final long serialVersionUID=1L;
private JMenuBar mb;
private JMenu m1,m2,m3,m4,m5;
private JMenuItem m1i1,m1i2,m1i3,m1i4,m1i5,m2i1,m2i2,m2i3,m2i4,m2i5,m2i6,m2i7,m3i1,m3i2,m4i1,m5i1,m5i2;
private JTextArea ta;
private JPopupMenu jpm;
private FileDialog fd;
private FileInputStream fis;
private FileWriter fw;
private File f;
private String str;
private byte[] txt=new byte[20*1024];
private int flag=1;
Notbook(){
init();
setTitle("记事本");
setSize(640,480);
setLocation(100, 100);
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
listener();
}
public void init(){
mb=new JMenuBar();
setJMenuBar(mb);
m1=new JMenu("文件");
m1.setFont(new Font("宋体",0,12));
m2=new JMenu("编辑");
m2.setFont(new Font("宋体",0,12));
m3=new JMenu("格式");
m3.setFont(new Font("宋体",0,12));
m4=new JMenu("查看");
m4.setFont(new Font("宋体",0,12));
m5=new JMenu("帮助");
m5.setFont(new Font("宋体",0,12));
mb.add(m1);
mb.add(m2);
mb.add(m3);
mb.add(m4);
mb.add(m5);
m1i1=new JMenuItem("新建");
m1i1.setFont(new Font("宋体",0,12));
m1i1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
m1i2=new JMenuItem("打开");
m1i2.setFont(new Font("宋体",0,12));
m1i2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
m1i5=new JMenuItem("保存");
m1i5.setFont(new Font("宋体",0,12));
m1i5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
m1i3=new JMenuItem("另存为");
m1i3.setFont(new Font("宋体",0,12));
m1i4=new JMenuItem("退出");
m1i4.setFont(new Font("宋体",0,12));
m1i4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,InputEvent.CTRL_MASK));
m2i1=new JMenuItem("撤销");
m2i1.setFont(new Font("宋体",0,12));
m2i1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));
m2i2=new JMenuItem("复制");
m2i2.setFont(new Font("宋体",0,12));
m2i2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
m2i3=new JMenuItem("剪切");
m2i3.setFont(new Font("宋体",0,12));
m2i3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
m2i4=new JMenuItem("粘帖");
m2i4.setFont(new Font("宋体",0,12));
m2i4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
m2i5=new JMenuItem("删除");
m2i5.setFont(new Font("宋体",0,12));
m2i5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
m2i6=new JMenuItem("全选");
m2i6.setFont(new Font("宋体",0,12));
m2i6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
m2i7=new JMenuItem("时间/日期");
m2i7.setFont(new Font("宋体",0,12));
m2i7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));
m3i1=new JMenuItem("自动换行");
m3i1.setFont(new Font("宋体",0,12));
m3i2=new JMenuItem("字体");
m3i2.setFont(new Font("宋体",0,12));
m3i2.setEnabled(false);
m4i1=new JMenuItem("状态栏");
m4i1.setEnabled(false);
m4i1.setFont(new Font("宋体",0,12));
m5i1=new JMenuItem("欢迎");
m5i1.setFont(new Font("宋体",0,12));
m5i1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F11,0));
m5i2=new JMenuItem("关于");
m5i2.setFont(new Font("宋体",0,12));
m5i2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F12,0));
m1.add(m1i1);
m1.addSeparator();
m1.add(m1i2);
m1.add(m1i5);
m1.add(m1i3);
m1.addSeparator();
m1.add(m1i4);
m2.add(m2i1);
m2.addSeparator();
m2.add(m2i3);
m2.add(m2i2);
m2.add(m2i4);
m2.add(m2i5);
m2.addSeparator();
m2.add(m2i6);
m2.add(m2i7);
m3.add(m3i1);
m3.add(m3i2);
m4.add(m4i1);
m5.add(m5i1);
m5.addSeparator();
m5.add(m5i2);
jpm=m2.getPopupMenu();
ta=new JTextArea();
ta.setFont(new Font("宋体",0,20));
add(new JScrollPane(ta));
}
public void listener(){
//编辑
m2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Clipboard cl=ta.getToolkit().getSystemClipboard();
str=ta.getSelectedText();
if(str==null){
m2i2.setEnabled(false);
m2i3.setEnabled(false);
}
else{
m2i2.setEnabled(true);
m2i3.setEnabled(true);
}
boolean b=cl.isDataFlavorAvailable(DataFlavor.stringFlavor);
if(b){
m2i4.setEnabled(true);
}
}
});
//新建
m1i1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
new Notbook();
}
});
//打开
m1i2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
fd=new FileDialog(new JFrame(),"打开",FileDialog.LOAD);
fd.setVisible(true);
str=fd.getDirectory()+fd.getFile();
if(str!=null)
try{
fis=new FileInputStream(str);
int l=fis.read(txt,0,txt.length);
ta.setText("");
ta.insert(new String(txt,0,l),0);
fis.close();
}
catch(IOException ex){
System.out.println("File read error:"+ex);
}
}
});
//另存为
m1i3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
fd=new FileDialog(new Frame(),"另存为",FileDialog.SAVE);
fd.setVisible(true);
str=fd.getDirectory()+fd.getFile();
f=new File(str);
try{
fw=new FileWriter(f);
fw.write(ta.getText());
fw.close();
}
catch(IOException ex){
System.out.println("File save error:"+ex);
}
}
});
//退出
m1i4.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
//保存
m1i5.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
fd=new FileDialog(new Frame(),"保存",FileDialog.SAVE);
fd.setVisible(true);
}
});
//撤销
m2i1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
}
});
//复制
m2i4.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
ta.paste();
}
});
//粘帖
m2i2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
ta.copy();
}
});
//剪切
m2i3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
ta.cut();
}
});
//删除
m2i5.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
ta.replaceRange("",ta.getSelectionStart(),ta.getSelectionEnd());
}
});
//全选
m2i6.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
ta.selectAll();
}
});
//时间日期
m2i7.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
ta.append(new Date().toString());
}
});
//自动换行
m3i1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
flag=-flag;
if(flag==1)
ta.setLineWrap(false);
else
ta.setLineWrap(true);
}
});
m3i2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
new Ziti();
}
});
//欢迎
m5i1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(new JFrame(),"Welcome to my notepad !","Welcome",JOptionPane.INFORMATION_MESSAGE);
}
});
//关于
m5i2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(new JFrame(),"新手驾到,欢迎批评","About",JOptionPane.INFORMATION_MESSAGE);
}
});
//右键弹出式菜单
ta.addMouseListener(
new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if(e.getButton() == MouseEvent.BUTTON3)
jpm.show(m2, e.getX()-30, e.getY());
}
public void mouseClicked(MouseEvent e) {
if(e.getButton() == MouseEvent.BUTTON1)
jpm.setVisible(false);
}
}
);
}
public static void main(String[] args) {
new Notbook();
}
}
class Ziti{
Ziti(){
JDialog jd=new JDialog(new Frame(),"字体",JDialog.DEFAULT_MODALITY_TYPE);
jd.setBounds(200,200,400,500);
jd.setResizable(false);
jd.setVisible(true);
}
}