-- 作者:admin
-- 发布时间:2009/5/7 19:23:33
-- 程序代码——记事本
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编辑过]
|