实验要求
能够打开文件,新建文件,保存文件,修改文件
实现界面
实现代码(代码顺序和上面结构体顺序一致)
package index;
public class Main {
public static void main(String[] args) {
new Window();
}
}
package index;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.File;
import javax.swing.JFrame;
//给窗体设置图标
public class MyTool {
public void setJFrameImage(JFrame jf) {
Toolkit t1 = Toolkit.getDefaultToolkit();
String ss = "img"+File.separator+"JFrameImage.jpg";
Image image = t1.getImage(ss);
jf.setIconImage(image);
}
//窗体位置自动居中
public void setJFrameLcotionCenter(JFrame jf) {
int jfw = jf.getWidth();
int jfh = jf.getHeight();
Toolkit t1 = Toolkit.getDefaultToolkit();
Dimension screen = t1.getScreenSize();
int winw = screen.width;
int winh = screen.height;
jf.setLocation((winw-jfw)/2,(winh-jfh)/2);
}
}
package index;
import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
public class Window implements ActionListener {
JFrame jf;
JMenuBar bar;
JMenu fileMenu, editMenu;
JMenuItem newItem, openItem, saveItem, closeItem;
ImageIcon newIcon, openIcon, saveIcon, closeIcon;
JScrollPane scroll;
JTextArea atea;
JFileChooser chooser;
File file;
FileInputStream fis;
FileOutputStream fos;
public Window() {
newWindow();
MyTool tool = new MyTool();
tool.setJFrameImage(jf);
jf.setSize(1000, 800);
tool.setJFrameLcotionCenter(jf);
jf.setVisible(true);
}
public void newWindow() {
jf = new JFrame("记事本");
bar = new JMenuBar(); // new一个菜单条
fileMenu = new JMenu("文件"); // 菜单栏里面的菜单
editMenu = new JMenu("编辑");
newIcon = new ImageIcon("img\\new.png"); // 文件菜单里的四个图标
openIcon = new ImageIcon("img\\open.png");
saveIcon = new ImageIcon("img\\save.png");
closeIcon = new ImageIcon("img\\close.png");
newItem = new JMenuItem("新建(N)", newIcon); // 文件菜单里的菜单项
openItem = new JMenuItem("打开(O)", openIcon);
saveItem = new JMenuItem("保存(S)", saveIcon);
closeItem = new JMenuItem("关闭(X)", closeIcon);
// 添加快捷键
newItem.setMnemonic(KeyEvent.VK_N);
newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, Event.CTRL_MASK));// Accelerator快捷键
openItem.setMnemonic(KeyEvent.VK_O);
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, Event.CTRL_MASK));
saveItem.setMnemonic(KeyEvent.VK_S);
saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, Event.CTRL_MASK));
closeItem.setMnemonic(KeyEvent.VK_X);
closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, Event.CTRL_MASK));
// 添加监听器
newItem.addActionListener(this);
openItem.addActionListener(this);
saveItem.addActionListener(this);
closeItem.addActionListener(this);
atea = new JTextArea(); // new多行文本框
scroll = new JScrollPane(atea); // 用构造方法在面板中加入多行文本框
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);// Vertical垂直
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);// Horizontal 水平
chooser = new JFileChooser();// Chooser 选择器
jf.setJMenuBar(bar);
bar.add(fileMenu);
bar.add(editMenu);
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(closeItem);
jf.add(scroll);
}
// 按钮事件监听
public void actionPerformed(ActionEvent e) {
JMenuItem performed = (JMenuItem) e.getSource();
if (performed == newItem) {
new Window();
} else if (performed == openItem) {
chooser.showOpenDialog(null);// Dialog 会话
file = chooser.getSelectedFile();
try {
fis = new FileInputStream(file);
byte[] b = new byte[(int) file.length()];
fis.read(b);
atea.append(new String(b));
fis.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
} else if (performed == saveItem) {
chooser.showSaveDialog(null);
chooser.setDialogTitle("另存为");
file = chooser.getSelectedFile();
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
try {
fos = new FileOutputStream(file);
String text = atea.getText();
fos.write(text.getBytes());
fos.close();
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} else if (performed == closeItem) {
System.exit(1);
}
}
private StringBuffer StringBuffer(byte[] b) {
// TODO Auto-generated method stub
return null;
}
}