记事本基本功能简单实现
1、新建
2、打开
3、保存
4、另存
5、退出
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import static java.lang.System.exit;
/**
* @program: JavaWork
* @description: 记事本
* @author: Tom里的同学
* @mail: 3421824066@qq.com
* @create: 2021-12-18 -2:39
*/
public class Test10 implements ActionListener {
//---------------------------------------------
JFrame frame;//窗体
JTextArea text;//多行文本框
JScrollPane jScrollPane;//滚动条
JMenuBar menuBar;//菜单栏
JMenu menuFile, menuedit, menuhelp;//菜单
JMenuItem newitem, openitem, exititem, saveitem, save_asitem;//菜单项
File file;//当前选择文件
//------------------------------------------------------------------------------
public Test10() {
//窗体初始化
frame = new JFrame("记事本");
frame.setSize(new Dimension(600, 700));
frame.setLocation(new Point(200, 100));
frame.setBackground(Color.white);
frame.setFont(new Font("Times New Roman",Font.PLAIN,15));
//文本框初始化
text = new JTextArea();
text.setEnabled(true);
jScrollPane = new JScrollPane(text);
frame.getContentPane().add(jScrollPane);//添加滚动条
menuBar = new JMenuBar();
//菜单初始化
menuFile = new JMenu("文件");
menuedit = new JMenu("编辑");
menuhelp = new JMenu("帮助");
//菜单项
newitem = new JMenuItem("新建(N)");
openitem = new JMenuItem("打开(O)");
exititem = new JMenuItem("退出(X)");
saveitem = new JMenuItem("保存(S)");
save_asitem = new JMenuItem("另存为(A)");
//为菜单项设置助记符
newitem.setMnemonic('N');
openitem.setMnemonic('O');
exititem.setMnemonic('X');
saveitem.setMnemonic('S');
save_asitem.setMnemonic('A');
//快捷键设置
newitem.setAccelerator(KeyStroke.getKeyStroke('N', InputEvent.CTRL_DOWN_MASK));
openitem.setAccelerator(KeyStroke.getKeyStroke('O', InputEvent.CTRL_DOWN_MASK));
saveitem.setAccelerator(KeyStroke.getKeyStroke('S',InputEvent.CTRL_DOWN_MASK));
save_asitem.setAccelerator(KeyStroke.getKeyStroke('S', InputEvent.CTRL_DOWN_MASK + InputEvent.SHIFT_DOWN_MASK));
//将菜单项添加到菜单
menuFile.add(newitem);
menuFile.add(openitem);
menuFile.add(saveitem);
menuFile.add(save_asitem);
menuFile.addSeparator();
menuFile.add(exititem);
//将菜单添加到菜单栏
menuBar.add(menuFile);
menuBar.add(menuedit);
menuBar.add(menuhelp);
//将才当栏添加到窗体
frame.setJMenuBar(menuBar);
//为菜单项添加监听器
newitem.addActionListener(this);
openitem.addActionListener(this);
save_asitem.addActionListener(this);
saveitem.addActionListener(this);
exititem.addActionListener(this);
//设置窗体可见
frame.setVisible(true);
}
//事件处理
public void actionPerformed(ActionEvent evn) {
Object obj = evn.getSource();//获取事件源
if (obj instanceof JMenuItem) {//判断事件源是否是JMenuItem类型的
JMenuItem item = (JMenuItem) obj;
if (item == newitem) {
//新建
new Test10();
} else if (item == openitem) {
//打开
setOpenitem();
} else if (item == saveitem) {
//保存
setSaveitem();
} else if (item == save_asitem) {
//另存
setSave_asitem();
} else if (item == exititem) {
//退出
exit(1);
}
}
}
public void setOpenitem() {
JFileChooser chooser = new JFileChooser();//文件选择框
chooser.showOpenDialog(null);
file = chooser.getSelectedFile();
try {
//输入流
InputStream fis = new FileInputStream(file);
byte[] b = new byte[fis.available()];
fis.read(b);
text.setText(new String(b));
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void setSaveitem(){
if(file==null)
setSave_asitem();//如果没有指定文件,另存
try{
//输出流
OutputStream fos=new FileOutputStream(file);
byte[] b=text.getText().getBytes();
fos.write(b);
//fos.write(text.getText().getBytes());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void setSave_asitem(){
JFileChooser chooser=new JFileChooser();
chooser.showSaveDialog(null);
file=chooser.getSelectedFile();
try {
OutputStream fos=new FileOutputStream(file);
byte[] b=text.getText().getBytes();
fos.write(b);
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Test10();
}
}