该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
package jishibeng;
import java.awt.BorderLayout;
import java.awt.FileDialog;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JEditorPane;
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.JScrollPane;
import javax.swing.JTextArea;
public class lkl_notpad extends JFrame {
private static final long serialVersionUID = 1L;
// 界面元素变量
JMenuBar menuBar; // 菜单
JPanel panel;
JEditorPane textEdit;
JLabel statusLabel;
// 控制变量
boolean TextChangeNoSave; // 当前文档的改变是否已经保存
boolean DocIsNew; // 当前文档是否为新建
// 当前文件名次、路径
String filePath;
String fileName;
// 系统粘贴板
Clipboard clip;
private JTextArea yy = new JTextArea(12, 24);
public lkl_notpad() {
JMenuBar menuBar = new JMenuBar();// 创建菜单栏
this.setJMenuBar(menuBar);// 将菜单栏添加到JFrame窗口中
JMenu menu = new JMenu("文件");// 创建菜单
menuBar.add(menu);// 将菜单添加到菜单栏上
// 创建四个菜单项
JMenuItem lkl1 = new JMenuItem("新建");
JMenuItem lkl2 = new JMenuItem("打开");
JMenuItem lkl3 = new JMenuItem("保存");
JMenuItem lkl4 = new JMenuItem("退出");
InitPara();
lkl1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
lkl_notpad.this.setTitle("新建文本");
yy.setText(" ");
}
});
lkl2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
FileDialog fd1 = new FileDialog(lkl_notpad.this, "打开",FileDialog.LOAD);
fd1.setFile("*.txt");
fd1.setVisible(true);
fileName = fd1.getFile();
filePath = fd1.getDirectory();
lkl_notpad.this.setTitle(fileName);
try {
FileReader fr = new FileReader(filePath + fileName);
BufferedReader br = new BufferedReader(fr);
String sinput = "";
yy.setText("");
int lineNum = 0;
while ((sinput = br.readLine()) != null) {
yy.append(sinput + "\r\n");
lineNum++;
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
lkl3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (DocIsNew) {
FileDialog saveFileDlg = new FileDialog(lkl_notpad.this, "保存文件",
FileDialog.SAVE);
saveFileDlg.setVisible(true);
filePath = saveFileDlg.getDirectory();
fileName = saveFileDlg.getFile();
}
WriteFile();
}
});
lkl4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (TextChangeNoSave) {
int n = JOptionPane.showConfirmDialog(lkl_notpad.this, "文件已更改,是否保存?", "提示!",
JOptionPane.YES_NO_OPTION);
if (n == JOptionPane.YES_OPTION) {
saveFile();
}
}
System.exit(0);
}
});
menu.add(lkl1);
menu.addSeparator();
menu.add(lkl2);
menu.addSeparator();
menu.add(lkl3);
menu.addSeparator();
menu.add(lkl4);
this.setLayout(new BorderLayout());
JScrollPane showPanel = new JScrollPane(yy);
this.add(showPanel, BorderLayout.CENTER);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(700, 600);
this.setVisible(true);
this.setLocation(300, 80);
}
public void saveFile() {
if (DocIsNew) {
FileDialog saveFileDlg = new FileDialog(lkl_notpad.this, "保存",
FileDialog.SAVE);
saveFileDlg.setVisible(true);
filePath = saveFileDlg.getDirectory();
fileName = saveFileDlg.getFile();
}}
public void WriteFile() {
if (fileName != null) {
try {
File file1 = new File(filePath, fileName);
FileWriter fw = new FileWriter(file1);
BufferedWriter out = new BufferedWriter(fw);
out.write(textEdit.getText());
out.close();
fw.close();
statusLabel.setText("文件保存成功!");
} catch (IOException e) {
statusLabel.setText("文件保存出错!");
}
}
}
public void InitPara() {
Toolkit toolkit = Toolkit.getDefaultToolkit();
clip = toolkit.getSystemClipboard();
TextChangeNoSave = false;
DocIsNew = true;
}
public static void main(String[] args) {
new lkl_notpad();
}
}