/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package notebook;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
/**
*
* @author Administrator
*/
public class TestNoteBook {
JFrame frame;
JFileChooser fileChooser;
JScrollPane scrollPane;
JPanel panel;
JTextArea textArea;
JMenuBar menuBar;
JMenu menu_File, menu_Write, menu_Style, menu_Look, menu_Help;
JMenuItem menuItem_Create, menuItem_Open, menuItem_Conservt,
menuItem_ConservtTo, menuItem_Exit, menuItem_Reject,
menuItem_X, menuItem_C, menuItem_V, menuItem_Delete,
menuItem_turnLine, menuItem_Words, menuItem_State,
menuItem_AboutNoteBook, menuItem_AboutWindows;
JLabel labelState;
JPopupMenu popupMenu;//弹出式式菜单
String path = null;
String str = null;
String filename;
public TestNoteBook() {
frame = new JFrame("新建 文本文档.txt-记事本");
fileChooser = new JFileChooser();
textArea = new JTextArea();
/*
设置一个可水平、垂直滚动的滚动面板,将JTextArea放在此面板中
*/
scrollPane = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
//textArea.setFont(new Font("宋体",Font.PLAIN,16));
menuBar = new JMenuBar();
labelState = new JLabel();
panel = new JPanel();
menu_File = new JMenu("文件(F)");
menu_Write = new JMenu("编辑(E)");
menu_Style = new JMenu("格式(O)");
menu_Look = new JMenu("查看(V)");
menu_Help = new JMenu("帮助(H)");
menuItem_Create = new JMenuItem("新建(N) Ctrl+N");
menuItem_Open = new JMenuItem("打开(O) Ctrl+O");
menuItem_Conservt = new JMenuItem("保存(S) Ctrl+S");
menuItem_ConservtTo = new JMenuItem("保存为(A) Ctrl+A");
menuItem_Exit = new JMenuItem("退出(X) Ctrl+X");
menuItem_Reject = new JMenuItem("撤销 Ctrl+Z");
menuItem_X = new JMenuItem("剪切 Ctrl+X");
menuItem_C = new JMenuItem("复制 Ctrl+C");
menuItem_V = new JMenuItem("粘贴 Ctrl+V");
menuItem_Delete = new JMenuItem("删除 Del");
menuItem_turnLine = new JMenuItem("自动换行(W)");
menuItem_Words = new JMenuItem("字体(F)");
menuItem_State = new JMenuItem("状态栏(S)");
menuItem_AboutNoteBook = new JMenuItem("关于记事本(A)");
menuItem_AboutWindows = new JMenuItem("关于主题(H)");
popupMenu = menu_Write.getPopupMenu();//弹出获得编辑菜单里面的子菜单
panel.add(labelState);
frame.add(panel, BorderLayout.SOUTH);
frame.add(scrollPane);//将可滚动面板加入frame
frame.setJMenuBar(menuBar);
menuBar.add(menu_File);
menuBar.add(menu_Write);
menuBar.add(menu_Style);
menuBar.add(menu_Look);
menuBar.add(menu_Help);
menu_File.add(menuItem_Create);
menu_File.add(menuItem_Open);
menu_File.add(menuItem_Conservt);
menu_File.add(menuItem_ConservtTo);
menu_File.add(menuItem_Exit);
menu_Write.add(menuItem_Reject);
menu_Write.add(menuItem_X);
menu_Write.add(menuItem_C);
menu_Write.add(menuItem_V);
menu_Write.add(menuItem_Delete);
menu_Style.add(menuItem_turnLine);
menu_Style.add(menuItem_Words);
menu_Look.add(menuItem_State);
menu_Help.add(menuItem_AboutNoteBook);
menu_Help.add(menuItem_AboutWindows);
frame.setSize(600, 400);
// frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//编译区鼠标事件监听
textArea.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
popupMenu.show(menu_Write, e.getX(), e.getY());//右击后弹出一个编译区的菜单栏的框
}
}
@Override
public void mouseClicked(MouseEvent e) {//上面的右击完成后,选择一个菜单左击后反应事件
if (e.getButton() == MouseEvent.BUTTON1) {
popupMenu.setVisible(false);//在弹出的选框左击中选择后将弹出的框隐藏
}
}
});
//编译区的键盘事件监听
textArea.addKeyListener(new KeyAdapter() {
@Override
public void keyTyped(KeyEvent e) {
labelState.setText("已修改");
//当键入键盘上的某个建时:说明文件内容能够已经修改
}
});
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
isSaveFile();
//按下关闭按钮时,判断下是否需要保存已修改的内容
}
});
menuItem_Conservt.addActionListener(new ActionListener() {
/*
为保存菜单项添加一个事件,当按下保存时,弹出保存对话框、完成所需要的保存操作
*/
public void actionPerformed(ActionEvent e) {
save();
}
});
/*
为保存为菜单项添加一个事件,当按下保存时,弹出保存对话框、完成所需要的保存操作
*/
menuItem_ConservtTo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
save();
}
});
/*
为打开菜单项添加一个事件,当按下保存时,弹出保存对话框、完成所需要的保存操作
*/
menuItem_Open.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (JFileChooser.APPROVE_OPTION == fileChooser.showOpenDialog(frame)) {
File file = fileChooser.getSelectedFile();
try {
frame.setTitle(file.getName());
// File file = new File(path);
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
while ((str = br.readLine()) != null) {
textArea.append(str + "/n");
}
br.close();
} catch (Exception ee) {
ee.printStackTrace();
}
} else {//如果无需打开、则退出界面
}
}
});
//新建子菜单项
menuItem_Create.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.setText("");
labelState.setText("已修改");
}
});
//退出子菜单项
menuItem_Exit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
isSaveFile();
}
});
//复制事件
menuItem_C.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.copy();
labelState.setText("已修改");
}
});
//粘贴事件
menuItem_V.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.paste();
labelState.setText("已修改");
}
});
//剪切事件
menuItem_X.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.cut();
labelState.setText("已修改");
}
});
//换行
menuItem_turnLine.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "已完成自动换行", "自动换行",
JOptionPane.INFORMATION_MESSAGE, null);
textArea.setLineWrap(true);//实现自动换行功能
textArea.setWrapStyleWord(true);//激活实现断行不断字功能
}
});
//字体
menuItem_Words.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "请设置字体", "字体设置",
JOptionPane.WARNING_MESSAGE, null);
}
});
menuItem_AboutNoteBook.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "详细请进如记事本官网:www.jishiben.com",
"关于记事本",
JOptionPane.PLAIN_MESSAGE, null);
}
});
menuItem_AboutWindows.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "详细请进如Windows官网:www.wenruanChina.com",
"关于主题",
JOptionPane.PLAIN_MESSAGE, null);
}
});
}
public void save() {//保存的方法
if (JFileChooser.APPROVE_OPTION == fileChooser.showSaveDialog(null)) {
path = fileChooser.getSelectedFile().getPath();
try {
File file = new File(path);
FileWriter fileWriter = new FileWriter(file);
fileWriter.write(textArea.getText());
fileWriter.close();
} catch (Exception ee) {
ee.printStackTrace();
}
} else {//如果取消保存、则退出界面
//System.exit(0);
}
}
//判断是否改变
public boolean isChange() {
if (labelState.getText().equals("已修改")) {
return false;
} else {
return true;
}
}
//如果文件修改就判断是否保存,弹出询问框
public void isSaveFile() {
if (isChange()) {//判断文本去是否改变
System.exit(0);
} else {
int TorF = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存", "保存?",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.WARNING_MESSAGE, null);
switch (TorF) {
case JOptionPane.YES_OPTION:
save();
break;
case JOptionPane.NO_OPTION:
System.exit(0);
}
}
}
public static void main(String[] args) {
new TestNoteBook();
}
}