?? notebook3.java
字號:
/**一個類似于視窗系統里記事本的程序
* 可以對文本文件進行簡單的編輯和瀏覽
*/
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.io.*;
public class NoteBook3 {
char buffer[] = new char[1024];
String sou = "";
String des = "";
long souTime, desTime;
JFrame mainWindow = new JFrame("文本編輯器");
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("文件");
JMenu helpMenu = new JMenu("幫助");
JMenuItem openItem = new JMenuItem("打開");
JMenuItem saveItem = new JMenuItem("保存");
JMenuItem resaveItem = new JMenuItem("另存為");
JMenuItem exitItem = new JMenuItem("退出");
JMenuItem helpItem = new JMenuItem("關于文本編輯器");
JTextArea textArea = new JTextArea(15, 30);
JScrollPane js = new JScrollPane();
JLabel labelInfo = new JLabel("狀態欄");
Listener listen = new Listener();
JFileChooser openDialog = new JFileChooser("F:\\");
// 窗體初始化方法
public void init() {
// 把菜單項加入到菜單欄中
menuBar.add(fileMenu);
menuBar.add(helpMenu);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(resaveItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
helpMenu.add(helpItem);
// 給菜單組件添加監聽器
openItem.addActionListener(listen);
saveItem.addActionListener(listen);
resaveItem.addActionListener(listen);
exitItem.addActionListener(listen);
helpItem.addActionListener(listen);
js.getViewport().setView(textArea);
// 添加窗體中的組件
mainWindow.setJMenuBar(menuBar);
mainWindow.getContentPane().add(js, BorderLayout.CENTER);
mainWindow.getContentPane().add(labelInfo, BorderLayout.SOUTH);
// mainWindow.setBounds(0, 0, 300, 300);
mainWindow.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
// 窗口監聽事件,當關閉窗口時觸發
mainWindow.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
// System.exit(0);
if (sou.equals("")) {
int len = JOptionPane.showConfirmDialog(mainWindow,
"文件未保存,是否保存");
if (len == JOptionPane.NO_OPTION)
System.exit(0);
else {
if (len == JOptionPane.YES_OPTION) {
len = openDialog.showSaveDialog(mainWindow);
if (len == JFileChooser.APPROVE_OPTION) {
File exitFile = openDialog.getSelectedFile();
des = textArea.getText();
save(exitFile);
sou = des;
if (exitFile.exists())
labelInfo.setText(exitFile.getPath()
+ "保存成功");
System.exit(0);
} else
labelInfo.setText("返回原程序");
} else
labelInfo.setText("返回原程序");
}
} else {
des = textArea.getText();
labelInfo.setText("退出程序");
if (sou.equals(des) == false) {
int len = JOptionPane.showConfirmDialog(mainWindow,
"文件未保存,是否保存");
if (len == JOptionPane.NO_OPTION)
System.exit(0);
else {
if (len == JOptionPane.YES_OPTION) {
len = len = openDialog
.showSaveDialog(mainWindow);
File exitFile = openDialog.getSelectedFile();
des = textArea.getText();
save(exitFile);
if (exitFile.exists())
labelInfo.setText(exitFile.getPath()
+ "保存成功");
} else
labelInfo.setText("返回原程序");
}
} else
System.exit(0);
}
}
});
// 按適合的大小顯示窗體于屏幕中央
mainWindow.pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
mainWindow.setSize(300, 200);
Dimension frameSize = mainWindow.getPreferredSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
mainWindow.setLocation(((screenSize.width - frameSize.width) / 2),
((screenSize.height - frameSize.height) / 2));
mainWindow.setSize(frameSize);
mainWindow.setVisible(true);
}
// 菜單組件監聽器類
class Listener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
// “打開”菜單項處理動作
if (command.equals("打開")) {
int len = openDialog.showOpenDialog(mainWindow);
File openFile = openDialog.getSelectedFile();
if (len == JFileChooser.APPROVE_OPTION) {
open(openFile);
souTime = openFile.lastModified();
}
}
// “保存”菜單項處理動作
if (command.equals("保存")) {
if (sou.equals("")) {
int len = openDialog.showSaveDialog(mainWindow);
if (len == JFileChooser.APPROVE_OPTION) {
File resaveFile = openDialog.getSelectedFile();
des = textArea.getText();
save(resaveFile);
sou = des;
if (resaveFile.exists())
labelInfo.setText(resaveFile.getPath() + "保存成功");
}
} else {
File saveFile = openDialog.getSelectedFile();
des = textArea.getText();
if (sou.equals(des) == false) {
save(saveFile);
sou = des;
}
}
}
// “另存為”菜單項處理動作
if (command.equals("另存為")) {
int len = openDialog.showSaveDialog(mainWindow);
if (len == JFileChooser.APPROVE_OPTION) {
File resaveFile = openDialog.getSelectedFile();
des = textArea.getText();
save(resaveFile);
if (resaveFile.exists())
labelInfo.setText(resaveFile.getPath() + "保存成功");
} else
labelInfo.setText("返回原程序");
}
// “退出”菜單項處理動作
if (command.equals("退出")) {
if (sou.equals("")) {
int len = JOptionPane.showConfirmDialog(mainWindow,
"文件未保存,是否保存");
if (len == JOptionPane.NO_OPTION)
System.exit(0);
else {
if (len == JOptionPane.YES_OPTION) {
len = openDialog.showSaveDialog(mainWindow);
if (len == JFileChooser.APPROVE_OPTION) {
File exitFile = openDialog.getSelectedFile();
des = textArea.getText();
save(exitFile);
sou = des;
if (exitFile.exists()) {
labelInfo.setText(exitFile.getPath()
+ "保存成功");
}
System.exit(0);
} else
labelInfo.setText("返回原程序");
} else
labelInfo.setText("返回原程序");
}
} else {
des = textArea.getText();
labelInfo.setText("退出程序");
if (sou.equals(des) == false) {
int len = JOptionPane.showConfirmDialog(mainWindow,
"文件未保存,是否保存");
if (len == JOptionPane.NO_OPTION)
System.exit(0);
else {
if (len == JOptionPane.YES_OPTION) {
len = len = openDialog
.showSaveDialog(mainWindow);
File exitFile = openDialog.getSelectedFile();
des = textArea.getText();
save(exitFile);
if (exitFile.exists())
labelInfo.setText(exitFile.getPath()
+ "保存成功");
} else
labelInfo.setText("返回原程序");
}
} else
System.exit(0);
}
}
// “關于文本編輯器”菜單項處理動作
if (command.equals("關于文本編輯器")) {
JOptionPane.showMessageDialog(null, "文本編輯器Version 0.7");
labelInfo.setText("返回原程序");
}
}
}
// 打開文件方法
public void open(File file) {
// String filePath=file.getParent()+"\\"+file.getName();
try {
FileReader in = new FileReader(file);
int len = in.read(buffer);
textArea.setText(new String(buffer, 0, len));
sou = new String(buffer, 0, len);
labelInfo.setText("打開" + file.getPath());
in.close();
} catch (Exception e) {
}
}
// 保存文件方法
public void save(File file) {
try {
FileWriter out = new FileWriter(file);
buffer = des.toCharArray();
out.write(buffer);
out.close();
desTime = file.lastModified();
if (desTime != souTime && file.exists()) {
labelInfo.setText(file.getPath() + "保存成功");
souTime = desTime;
}
} catch (Exception e) {
}
}
public static void main(String[] args) {
new NoteBook3().init();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -