import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.TextEvent;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JMenu;
import javax.swing.ScrollPaneConstants;
import java.awt.Font;
public class Txt extends JFrame implements ActionListener {
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Txt frame = new Txt();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
JMenuItem newfile = new JMenuItem("\u65B0\u5EFA");
JMenuItem open = new JMenuItem("\u6253\u5F00");
JMenuItem save = new JMenuItem("\u4FDD\u5B58");
JMenuItem exit = new JMenuItem("\u9000\u51FA");
JMenuItem copy = new JMenuItem("\u590D\u5236");
JTextArea textArea = new JTextArea();
File sefile;
private final JMenu mnv = new JMenu("\u67E5\u770B(V)");
private final JMenu mnh = new JMenu("\u5E2E\u52A9(H)");
private final JMenuItem mntmaboutEclipse = new JMenuItem("\u5173\u4E8E(About eclipse..)");
public Txt() {
setTitle("\u65E0\u6807\u9898 - \u8BB0\u4E8B\u672C");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 364, 432);
getContentPane().setLayout(null);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu mne = new JMenu("\u7F16\u8F91(E)");
JMenu mnf = new JMenu("\u6587\u4EF6(F)");
menuBar.add(mnf);
menuBar.add(mne);
mnf.add(newfile);
mnf.add(open);
mnf.add(save);
mnf.add(exit);
mne.add(copy);
JMenuItem paste = new JMenuItem("\u7C98\u8D34");
mne.add(paste);
JMenuItem z = new JMenuItem("\u526A\u5207");
mne.add(z);
menuBar.add(mnv);
menuBar.add(mnh);
mnh.add(mntmaboutEclipse);
JScrollPane js = new JScrollPane();
js.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
js.setBounds(0, 0, 348, 371);
js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
getContentPane().add(js);
textArea.setFont(new Font("微软雅黑", Font.PLAIN, 14));
js.setViewportView(textArea);
textArea.setLineWrap(true); // 设置自动换行
exit.addActionListener(this); // 加监听
open.addActionListener(this);
save.addActionListener(this);
newfile.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == newfile) {
this.setTitle("无标题 - 记事本");
textArea.setText("");
sefile = null; // 如果点击新建,路径置空
} else if (e.getSource() == open) {
JFileChooser jFileChooser = new JFileChooser();
jFileChooser.showOpenDialog(this); // 打开文件的弹窗
sefile = jFileChooser.getSelectedFile(); // 路径为上一步选择的路径
try {
// 开始读文件
FileReader fileReader = new FileReader(sefile);
// 设置缓存读取,优化速度
BufferedReader bufferedReader = new BufferedReader(fileReader);
String txt = "";
String line = null;
while ((line = bufferedReader.readLine()) != null) {
txt += line + '\n';
}
bufferedReader.close();
textArea.setText(txt);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
} else if (e.getSource() == save) {
// 如果没打开过文件
if (sefile == null) {
JFileChooser jFileChooser = new JFileChooser();
jFileChooser.showSaveDialog(this);
sefile = jFileChooser.getSelectedFile();
// 修改文件名
this.setTitle(sefile.getName() + "- 记事本");
}
try {
// 保存
FileWriter fileWriter = new FileWriter(sefile);
fileWriter.write(textArea.getText());
fileWriter.close();
} catch (IOException e1) {
e1.printStackTrace();
}
} else if (e.getSource() == exit) {
if (textArea.getText() != null) {
int n = JOptionPane.showConfirmDialog(null, "是否对记事本进行保存?", "另存为", JOptionPane.YES_NO_OPTION);
if (n == JOptionPane.YES_OPTION) {
if (sefile == null) {
JFileChooser jFileChooser = new JFileChooser();
jFileChooser.showSaveDialog(this);
sefile = jFileChooser.getSelectedFile();
// 修改文件名
this.setTitle(sefile.getName() + "- 记事本");
}
try {
// 保存
FileWriter fileWriter = new FileWriter(sefile);
fileWriter.write(textArea.getText()); // 往文件写多行文本框输的内容
fileWriter.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
System.exit(0);
}
else
System.exit(0);
}
}
}
SWUST--Java实验(五) 简单记事本
最新推荐文章于 2021-02-27 12:39:55 发布