import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JColorChooser;
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.ScrollPaneConstants;
//测试类
public class Exec {
public static void main(String[] args) {
// 创建窗体类变量
DemoWindow dw = new DemoWindow("记事本");
// 将窗体的宽度和高度分别设置为屏幕宽度和屏幕高度的1/3,左上角位置也设置为屏幕宽度和屏幕高度的1/3处
Toolkit theKit = dw.getToolkit();
Dimension wndSize = theKit.getScreenSize();
dw.setBounds(wndSize.width / 3, wndSize.height / 3, wndSize.width / 3,
wndSize.height / 3);
// 点击关闭按钮可以退出程序
dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗体为可见
dw.setVisible(true);
}
}
// 记事本窗体
class DemoWindow extends JFrame implements ActionListener {
// 显示文本文件内容的文本区
JTextArea textArea = new JTextArea();
// 设置文本区的滚动条
int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
JScrollPane jsp = new JScrollPane(textArea, v, h);
// 菜单
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("文件");
JMenuItem newItem = new JMenuItem("新建");
JMenuItem openItem = new JMenuItem("打开");
JMenuItem saveItem = new JMenuItem("保存");
JMenuItem saveAsItem = new JMenuItem("另存为");
JMenuItem exitItem = new JMenuItem("退出");
JMenu editMenu = new JMenu("编辑");
JMenuItem selectItem = new JMenuItem("全选");
JMenuItem foreColor = new JMenuItem("前景色");
JMenuItem backColor = new JMenuItem("背景色");
// 当前打开的文件名称
String fileName = null;
// 构造函数
public DemoWindow(String title) {
super(title);
// 添加菜单
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.addSeparator();
fileMenu.add(saveItem);
fileMenu.add(saveAsItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
editMenu.add(selectItem);
editMenu.addSeparator();
editMenu.add(foreColor);
editMenu.add(backColor);
menuBar.add(fileMenu);
menuBar.add(editMenu);
setJMenuBar(menuBar);
// 添加文本区
add(jsp);
// 添加事件监听器
newItem.addActionListener(this);
openItem.addActionListener(this);
saveItem.addActionListener(this);
saveAsItem.addActionListener(this);
exitItem.addActionListener(this);
selectItem.addActionListener(this);
foreColor.addActionListener(this);
backColor.addActionListener(this);
}
// 响应单击菜单
public void actionPerformed(ActionEvent e) {
JMenuItem eventSource = (JMenuItem) e.getSource();
// 处理新建文件
if (eventSource == newItem) {
textArea.setText("");
}
// 处理打开文件
else if (eventSource == openItem) {
readFromFile();
}
// 处理保存文件
else if (eventSource == saveItem) {
writeToFile(fileName);
}
// 处理另存为文件
else if (eventSource == saveAsItem) {
writeToFile(null);
}
// 处理退出程序
else if (eventSource == exitItem) {
System.exit(0);
}
// 处理文本全选
else if (eventSource == selectItem) {
textArea.selectAll();
}
// 处理设置前景色
else if (eventSource == foreColor) {
Color color = JColorChooser.showDialog(this, "前景色", textArea
.getForeground());
if (color != null) {
textArea.setForeground(color);
}
}
// 处理设置背景色
else if (eventSource == backColor) {
Color color = JColorChooser.showDialog(this, "背景色", textArea
.getBackground());
if (color != null) {
textArea.setBackground(color);
}
}
}
// 保存文件的函数
private void writeToFile(String file) {
// 如果没有文件名称,打开对话框要求选择文件名
if (file == null) {
// getFileName参数为true显示保存对话框
fileName = getFileName(true);
}
if (fileName != null) {
try {
// 写入文件
File writeFile = new File(fileName);
FileWriter writeOut = new FileWriter(writeFile);
writeOut.write(textArea.getText());
writeOut.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
// 读取文件的函数
private void readFromFile() {
// 打开对话框要求选择文件
// getFileName参数为false显示打开对话框
fileName = getFileName(false);
if (fileName != null) {
try {
// 读取文件
File readFile = new File(fileName);
FileReader readIn = new FileReader(readFile);
int size = (int) readFile.length();
int charsRead = 0;
char[] content = new char[size];
while (readIn.ready())
charsRead += readIn.read(content, charsRead, size
- charsRead);
readIn.close();
textArea.setText(new String(content, 0, charsRead));
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
// 显示文件选择对话框,参数为true,显示保存对话框,参数为false,显示打开对话框
private String getFileName(boolean isWrite) {
String fileName = null;
JFileChooser jfc = new JFileChooser();
int result = -1;
if (!isWrite)
result = jfc.showOpenDialog(this);
else
result = jfc.showSaveDialog(this);
if (result == JFileChooser.APPROVE_OPTION)
fileName = jfc.getSelectedFile().getPath();
// 返回选择的文件名
return fileName;
}
}
[此贴子已经被作者于2010-12-12 08:30:47编辑过]