记事本
一:实验代码
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class Reader implements ActionListener { //监听
JFrame frame;
JMenuBar bar;
JMenu fileMenu;
ImageIcon newIcon,openIcon,saveIcon,closeIcon,savesIcon;
JMenuItem newItem,openItem , saveItem,closeItem,savesItem,obj;
JFileChooser chooser;
File file;
JTextArea area;
public Reader() {
frame=new JFrame("TZM");
bar=new JMenuBar();
fileMenu=new JMenu("文件");
newIcon=new ImageIcon("d:"+File.separator+"tu"+File.separator+"1.png");
openIcon=new ImageIcon("d:"+File.separator+"tu"+File.separator+"2.png");
saveIcon=new ImageIcon("d:"+File.separator+"tu"+File.separator+"3.png");
savesIcon=new ImageIcon("d:"+File.separator+"tu"+File.separator+"3.png");
closeIcon=new ImageIcon("d:"+File.separator+"tu"+File.separator+"4.png");
newItem = new JMenuItem("新建(N)",newIcon);
openItem = new JMenuItem("打开(O)",newIcon);
saveItem = new JMenuItem("另存为(A)",newIcon);
savesItem = new JMenuItem("保存(B)",newIcon);
closeItem = new JMenuItem("关闭(X)",newIcon);
area=new JTextArea();
newItem.setMnemonic(KeyEvent.VK_N); //快捷键
openItem.setMnemonic(KeyEvent.VK_O);
saveItem.setMnemonic(KeyEvent.VK_A);
savesItem.setMnemonic(KeyEvent.VK_B);
closeItem.setMnemonic(KeyEvent.VK_X);
newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_DOWN_MASK));
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_DOWN_MASK));
saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
savesItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,InputEvent.CTRL_DOWN_MASK));
closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_DOWN_MASK));
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(savesItem);
fileMenu.add(closeItem);
JScrollPane scroll =new JScrollPane(area, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);//加滚动条
fileMenu.addSeparator();
newItem.addActionListener(this);
openItem.addActionListener(this);
saveItem.addActionListener(this);
savesItem.addActionListener(this);
closeItem.addActionListener(this);
bar.add(fileMenu);
frame.setJMenuBar(bar);
frame.add(scroll);
frame.setVisible(true);
frame.pack();
}
@Override
public void actionPerformed(ActionEvent e) {
Object obj= e.getSource();// 获得事件监听的对象
if(obj instanceof JMenuItem) {
JMenuItem item=(JMenuItem) obj;
if(item==newItem) { //新建
new Reader();
}else if(item==openItem) { //打开
chooser=new JFileChooser();
chooser.showOpenDialog(null);
file=chooser.getSelectedFile();//选择文件
try {
FileInputStream fis=new FileInputStream(file);
byte[] b=new byte[fis.available()];//创建了一个和文件大小一样的缓冲区
fis.read(b);
area.append(new String(b));
fis.close();
}catch(FileNotFoundException e1) {
e1.printStackTrace();
}catch(IOException e1) {
e1.printStackTrace();
}
}else if(item==saveItem){ //另存为
chooser.showOpenDialog(null);
file=chooser.getSelectedFile();
try {
if(!file.exists()) {
file.createNewFile();
}
FileOutputStream fos=new FileOutputStream(file);
byte[] b=area.getText().getBytes();
fos.write(b);
fos.close();
}catch(IOException e1) {
e1.printStackTrace();
}
}else if(item == savesItem) { //保存
if(file!=null) {
try {
PrintStream out = new PrintStream(new FileOutputStream(file));
out.print(this.area.getText());
out.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
}
}else if(item==closeItem){ //关闭
System.exit(1);
}
}
}
}
二:实验截图
总结:
这个记事本主要按照老师的方法来写的,然后在加了保存。PrintStream是I/O(输入/输出)流的一种,属于输出流,通过PrintStream可以将文字打印到文件或者网络中去,通俗点就是可以通过它把一段文字保存到文件中,或者如果是网络链接的话可以将文字发送到网络的那端。创建新的打印流,就是创建一个新的PrintStream对象,通过newPrintStream(OutStream/或者其他参数)完成。
鼠标事件及其处理:
单选钮:JRadioButton
复选框:JCheckBox
JMenuBar
JMenu
JMenuItem