如何用Java去写一个简单的记事本代码呢
这个简单的记事本带码具有以下的功能:新建、打开、保存和关闭四个简单的功能,主要是来分享怎么去学习和使用的窗口、菜单、IO流.
那我们就自己来看代码吧
import javax.swing.*;
import javax.xml.transform.Source;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.*;
import java.nio.charset.StandardCharsets; //以上都为导包
public class Notepad implements ActionListener {
JFrame jf; //声明窗口类
JMenuBar jmb; //声明栏类
JMenu jm; // 声明菜单类对象
JMenuItem newItem,openItem,saveItem,exitItem; //声明菜单项类对象
JTextArea jta; //声明多行文本框类
JScrollPane jsp;//带滚动条容器类
File file; //创建File
//将这些对象都定义在构造方法的外面额能够让不同的类去调用它
public Notepad(){ //创建一个构造方法
String path="E:"+ File.separator+"精彩图片"+File.separator+"Java测试图"+File.separator; //通道字符串写出一个路径
jf=new JFrame("记事本"); //创建窗口类对象
jmb=new JMenuBar();
jm=new JMenu("文件");
newItem=new JMenuItem("新建(N)",new ImageIcon(path+"新建.png"));
Icon ic=new ImageIcon(path+"打开.jpg");
openItem=new JMenuItem("打开(O)",ic);
saveItem=new JMenuItem("保存(S)",new ImageIcon(path+"保存.jpg"));
exitItem=new JMenuItem("关闭(X)",new ImageIcon(path+"关闭.jpg"));
jta=new JTextArea();
jsp=new JScrollPane(jta);
file=new File(new String());
newItem.setMnemonic('N');
openItem.setMnemonic('O');
saveItem.setMnemonic('S');
exitItem.setMnemonic('X');
newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, Event.CTRL_MASK/*|ActionEvent.ALT_MASK*/));
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK/*|ActionEvent.ALT_MASK*/));
saveItem.setAccelerator(KeyStroke.getKeyStroke(/*KeyEvent.VK_S*/'S', ActionEvent.CTRL_MASK|ActionEvent.ALT_MASK));
exitItem.setAccelerator(KeyStroke.getKeyStroke(/*KeyEvent.VK_X*/'X', ActionEvent.CTRL_MASK|ActionEvent.ALT_MASK));
newItem.addActionListener(this);
openItem.addActionListener(this);
saveItem.addActionListener(this);
exitItem.addActionListener(this);
jm.add(newItem);
jm.add(openItem);
jm.add(saveItem);
jm.addSeparator();
jm.add(exitItem);
jmb.add(jm);
jf.setJMenuBar(jmb);
jf.add(jsp);
jf.setSize(400,500);
ImageIcon imageIcon=new ImageIcon("E:"+ File.separator+"精彩图片"+File.separator+"Java测试图"+File.separator+"记事本.png");;
jf.setIconImage(imageIcon.getImage());
jf.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
Object obj=e.getSource();
if(obj instanceof JMenuItem){
JMenuItem item=(JMenuItem) obj;
if(item==newItem){
new Notepad();
}
else if(item==openItem){
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);
jta.setText(new String(b));
}catch (IOException event){
event.printStackTrace();
}
}
else if(item==saveItem){
JFileChooser chooser=new JFileChooser();
chooser.showSaveDialog(null);
file=chooser.getSelectedFile();
try {
OutputStream fos=new FileOutputStream(file);
String str=jta.getText();
byte[] byt=str.getBytes(StandardCharsets.UTF_8);
fos.write(byt);
fos.close();
}catch (IOException event){
event.printStackTrace();
}
}
else if(item==exitItem){
System.exit(1);
}
}
}
}
补加一点内容 有些小伙伴可能疑惑代码怎么不能跑运气起来
要运行的话 new Notepad()出来就可以啦 很简单哈
public static void main(String[] args) {
new Notepad();
}
创一个新类加进去 或者加到倒数第二行里面去(也即是被一个 } 包住.