黑马程序员技术交流社区

标题: 黑马程序员-Java基础-GUI编程事例-资源管理器-我的记事本 [打印本页]

作者: QQheima    时间: 2015-6-11 22:54
标题: 黑马程序员-Java基础-GUI编程事例-资源管理器-我的记事本
学习GUI编程后,根据毕老师的讲解,自己做了两个练习项目。
一个是类似于打开我的电脑后的资源管理器窗口。在地址栏输入路径就可以列出该目录下的所有文件夹和文件,如果地址错误,就会弹出窗口提示。
另一个是类似于记事本的文本编辑器,实现了新建、打开、保存文本文档的功能。
以下下是源码:
一、资源管理器
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.io.*;

  4. public class FileManager {
  5.        
  6.         //定义窗体对象
  7.         private Frame fr;
  8.        
  9.         //定义文本框
  10.         TextField tf;
  11.        
  12.         //定义按钮对象
  13.         private Button btn;
  14.        
  15.         //定义文本框区域
  16.         TextArea ta;
  17.        
  18.         //定义提示对话框
  19.         Dialog dialog;
  20.        
  21.         //对话框提示信息
  22.         Label label;
  23.        
  24.         //提示信息确认按钮
  25.         Button btnOk;
  26.        
  27.         //定义构造函数,并调用窗体初始化方法
  28.         public FileManager(){
  29.                 init();               
  30.         }
  31.        
  32.         //定义窗体初始化方法
  33.         private void init(){

  34.                 //实例化控件
  35.                 fr = new Frame("我的电脑");
  36.                 btn = new Button("转到");
  37.                 tf = new TextField(40);
  38.                 ta = new TextArea(13,50);
  39.                
  40.                 dialog = new Dialog(fr,"错误提示",true);
  41.                 label = new Label();
  42.                 btnOk = new Button("确认");
  43.                
  44.                 //组建提示框
  45.                 dialog.setBounds(380, 300, 180, 120);
  46.                 dialog.setLayout(new FlowLayout());
  47.                 dialog.add(label);
  48.                 btnOkAddListener();
  49.                 dialog.add(btnOk);
  50.                
  51.                 //设置窗体属性
  52.                 fr.setBounds(300, 200, 400, 300);
  53.                 fr.setLayout(new FlowLayout());               
  54.                
  55.                 //添加监听事件
  56.                 frAddListener();
  57.                 tfAddListener();
  58.                 btnAddListener();
  59.                
  60.                 //将控件添加到窗体
  61.                 fr.add(tf);
  62.                 fr.add(btn);
  63.                 fr.add(ta);
  64.                
  65.                 //显示窗体
  66.                 fr.setVisible(true);
  67.         }
  68.        
  69.         //文本框添加监听事件
  70.         private void tfAddListener(){
  71.                 tf.addKeyListener(new KeyAdapter(){
  72.                         public void keyPressed(KeyEvent e){
  73.                                 int kc = e.getKeyCode();
  74. //                                if(!(kc >= KeyEvent.VK_0 && kc <= KeyEvent.VK_9)){
  75. //                                        System.out.println("非法输入:"+e.getKeyChar());
  76.                                         //取消程序默认要执行的操作
  77. //                                        e.consume();
  78. //                                }
  79.                                 if(kc == KeyEvent.VK_ENTER){
  80.                                         showFile();
  81.                                 }
  82.                         }
  83.                 });
  84.         }
  85.        
  86.         //Button按钮添加监听事件
  87.         private void btnAddListener(){
  88.                 btn.addMouseListener(new MouseAdapter(){
  89.                         public void mouseClicked(MouseEvent e){
  90.                                 showFile();
  91.                         }
  92.                 });
  93.         }
  94.        
  95.         //提示信息确认按钮添加监听事件的方法
  96.         private void btnOkAddListener(){
  97.                
  98.                 //监听激活事件(可以是鼠标点击,或者键盘点击)
  99.                 btnOk.addActionListener(new ActionListener(){
  100.                        
  101.                         //实现构造函数ActionListener中的构造方法
  102.                         public void actionPerformed(ActionEvent e){
  103.                                
  104.                                 //隐藏提示框
  105.                                 dialog.setVisible(false);
  106.                         }
  107.                 });
  108.         }
  109.        
  110.         //显示文件目录的方法
  111.         private void showFile(){
  112.                 String dirPath = tf.getText();
  113.                 File dir = new File(dirPath);
  114.                 if(dir.exists()&&dir.isDirectory()){
  115.                         ta.setText("");
  116.                         for(String name:dir.list()){
  117.                                 ta.append(name+"\r\n");
  118.                         }
  119.                 }else{
  120.                         label.setText("非法地址:"+dirPath);
  121.                         dialog.setVisible(true);
  122.                 }
  123.         }
  124.        
  125.         //窗体添加监听事件的方法
  126.         private void frAddListener(){
  127.                
  128.                 //Frame窗体对象调用添加监听事件方法,创建匿名函数对象
  129.                 fr.addWindowListener(new WindowAdapter(){
  130.                        
  131.                         //复写父类WindowAdapter中的方法
  132.                         public void windowClosing(WindowEvent e){
  133.                                
  134.                                 //退出系统
  135.                                 System.exit(0);
  136.                         }
  137.                 });
  138.         }
  139.        
  140.         public static void main(String[] args){
  141.                 new FileManager();
  142.         }
  143. }
复制代码
运行结果:


二、文本编辑器
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.io.*;

  4. public class FileEditor {

  5.         //定义成员对象
  6.         private Frame fr;
  7.         private MenuBar bar;
  8.         private Menu fileMenu, optMenu;
  9.         private MenuItem closeItem, openItem,saveItem;
  10.         private TextArea ta;
  11.         File file;
  12.         private FileDialog fileDialog;
  13.        
  14.         //定义构造方法
  15.         public FileEditor(){
  16.                 init();               
  17.         }
  18.        
  19.         //定义窗体初始化方法
  20.         private void init(){
  21.                
  22.                 //实例化窗体对象
  23.                 fr = new Frame("文本编辑器");
  24.                 fr.setBounds(300, 200, 700, 500);
  25.                
  26.                 //实例化菜单
  27.                 bar = new MenuBar();
  28.                 fileMenu = new Menu("文件");
  29.                 optMenu = new Menu("操作");
  30.                 openItem = new MenuItem("打开");
  31.                 saveItem = new MenuItem("保存");
  32.                 closeItem = new MenuItem("关闭");
  33.                
  34.                 //组织菜单
  35.                 optMenu.add(openItem);
  36.                 optMenu.add(saveItem);
  37.                 fileMenu.add(optMenu);
  38.                 fileMenu.add(closeItem);
  39.                 bar.add(fileMenu);
  40.                
  41.                 //实例化编辑框、文件对话框
  42.                 ta = new TextArea();
  43.                 fileDialog = new FileDialog(fr);
  44.                
  45.                 //组织窗体
  46.                 fr.add(ta);
  47.                 fr.setMenuBar(bar);
  48.                 addListener();
  49.                
  50.                 //将窗体显示出来
  51.                 fr.setVisible(true);
  52.         }
  53.        
  54.         //监听器
  55.         private void addListener(){
  56.                
  57.                 //关闭菜单监听器
  58.                 closeItem.addActionListener(new ActionListener(){
  59.                         public void actionPerformed(ActionEvent e){
  60.                                 System.exit(0);
  61.                         }
  62.                 });
  63.                
  64.                 //打开菜单监听器
  65.                 openItem.addActionListener(new ActionListener(){
  66.                         public void actionPerformed(ActionEvent e){
  67.                                 fileDialog.setTitle("打开文件");
  68.                                 fileDialog.setMode(FileDialog.LOAD);
  69.                                 openFile();
  70.                         }
  71.                 });
  72.                
  73.                 //保存菜单监听器
  74.                 saveItem.addActionListener(new ActionListener(){
  75.                         public void actionPerformed(ActionEvent e){
  76.                                 fileDialog.setTitle("保存文件");
  77.                                 fileDialog.setMode(FileDialog.SAVE);
  78.                                 saveFile();
  79.                         }
  80.                 });
  81.                
  82.                 //关闭窗体监听器
  83.                 fr.addWindowListener(new WindowAdapter(){
  84.                         public void windowClosing(WindowEvent e){
  85.                                 System.exit(0);
  86.                         }
  87.                 });
  88.         }
  89.         private void openFile(){
  90.                
  91.                 //打开文件对话框
  92.                 fileDialog.setVisible(true);
  93.                
  94.                 //获取文件属性
  95.                 String dirPath = fileDialog.getDirectory();
  96.                 String fileName = fileDialog.getFile();
  97.                
  98.                 //判断文件是否存在
  99.                 if(null!=dirPath && null!=fileName){
  100.                        
  101.                         //清空编辑框中的原有内容
  102.                         ta.setText("");
  103.                        
  104.                         file = new File(dirPath,fileName);
  105.                         BufferedReader bufr = null;
  106.                        
  107.                         //读取文件内容
  108.                         try{
  109.                                 bufr = new BufferedReader(new FileReader(file));
  110.                                
  111.                                 String line = null;
  112.                                
  113.                                 //将读取的内容写入文本框编辑区
  114.                                 while((line=bufr.readLine())!=null){
  115.                                         ta.append(line+"\r\n");
  116.                                 }
  117.                         }catch(IOException e){
  118.                                 throw new RuntimeException(e);
  119.                         }finally{
  120.                                 if(null!= bufr){
  121.                                         try{
  122.                                                 bufr.close();
  123.                                         }catch(IOException e){
  124.                                                 System.out.println("关闭流失败。");
  125.                                         }
  126.                                 }
  127.                         }
  128.                 }
  129.         }

  130.         private void saveFile(){
  131.                
  132.                 //判断文件是否存在
  133.                 if(null==file){
  134.                        
  135.                         //弹出保存文件对话框
  136.                         fileDialog.setVisible(true);
  137.                        
  138.                         String dirPath = fileDialog.getDirectory();
  139.                         String fileName = fileDialog.getFile();
  140.                        
  141.                         if(dirPath==null || fileName==null){
  142.                                 return;
  143.                         }
  144.                        
  145.                         file = new File(dirPath,fileName);
  146.                 }
  147.                
  148.                 BufferedWriter bw = null;
  149.                
  150.                 try{
  151.                         bw = new BufferedWriter(new FileWriter(file));
  152.                         String text = ta.getText();
  153.                         bw.write(text);
  154.                 }catch(IOException e){
  155.                         throw new RuntimeException(e);
  156.                 }finally{
  157.                         if(null!= bw){
  158.                                 try{
  159.                                         bw.close();
  160.                                 }catch(IOException e){
  161.                                         System.out.println("关闭流失败。");
  162.                                 }
  163.                         }
  164.                 }
  165.         }
  166.        
  167.         public static void main(String[] args) {

  168.                 //创建窗体对象
  169.                 new FileEditor();

  170.         }
  171. }
复制代码
运行结果:





作者: QQheima    时间: 2015-6-11 23:01
唉,都木有人回帖,能不能自己顶一下啊,好悲凉的气氛~~~{:2_33:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2