Java 简易文本浏览器

Java 简易文本浏览器

已经学习了一个月的Java,自己看到了书上的一道习题,于是拿来与大家分享,代码来源于《Java从入门到精通》,有需要的朋友可以去查阅相关书籍。从写的第一个"Hello World" 小程序到今天已经足足一个月,这一个月有过想要放弃的时候,但凭着日复一日的努力坚持到现在。

package com.mrsoft;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

import javax.swing.JButton;
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.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import javax.swing.UIManager;

public class TextFileOpener extends JFrame {
    
    /**
     * 
     */
    private static final long serialVersionUID = -9077023825514749548L;
    private JTextArea ta_showText; // 定义显示文件属性的文本域
    private JTextArea ta_showProperty; // 定义显示文件内容的文本域
    
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (Throwable e) {
            e.printStackTrace();
        }
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    TextFileOpener frame = new TextFileOpener();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    
    /**
     * Create the frame.
     */
    public TextFileOpener() {
        setTitle("打开文本文件"); // 设置窗体标题
        setBounds(100, 100, 400, 250); // 设置窗体位置和大小
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置窗体默认关闭方式
        final JMenuBar menuBar = new JMenuBar(); // 创建菜单栏
        setJMenuBar(menuBar); // 把菜单栏放到窗体上
        final JMenu mn_file = new JMenu(); // 创建文件菜单
        mn_file.setText("文件"); // 为文件菜单设置标题
        menuBar.add(mn_file); // 把文件菜单添加到菜单栏上
        final JMenuItem mi_open = new JMenuItem(); // 创建打开菜单项
        mi_open.addActionListener(new ActionListener() { // 为打开菜单项添加监听器
            public void actionPerformed(final ActionEvent arg0) {
                openTextFile(); // 调用方法,操作文件
            }
        });
        mi_open.setText("打开"); // 设置打开菜单项的标题
        mn_file.add(mi_open); // 把打开菜单项添加到文件菜单
        mn_file.addSeparator(); // 添加菜单分隔符
        final JMenuItem mi_exit = new JMenuItem(); // 创建退出菜单项
        mi_exit.addActionListener(new ActionListener() { // 为退出菜单项添加监听器
            public void actionPerformed(final ActionEvent arg0) {
                System.exit(0); // 退出系统
            }
        });
        mi_exit.setText("退出"); // 设置退出菜单项的标题
        mn_file.add(mi_exit); // 把退出菜单项添加到文件菜单
        final JMenu mn_edit = new JMenu(); // 创建编辑菜单
        mn_edit.setText("编辑"); // 为编辑菜单设置标题
        menuBar.add(mn_edit); // 把编辑菜单添加到菜单栏上
        final JMenuItem mi_copy = new JMenuItem(); // 创建复制菜单项
        mi_copy.setText("复制"); // 设置复制菜单项的标题
        mn_edit.add(mi_copy); // 把复制菜单项添加到编辑菜单
        final JMenuItem mi_cut = new JMenuItem(); // 创建剪切菜单项
        mi_cut.setText("剪切"); // 设置剪切菜单项的标题
        mn_edit.add(mi_cut); // 把剪切菜单项添加到编辑菜单
        final JMenuItem mi_paste = new JMenuItem(); // 创建粘贴菜单项
        mi_paste.setText("粘贴"); // 设置粘贴菜单项的标题
        mn_edit.add(mi_paste); // 把粘贴菜单项添加到编辑菜单
        final JToolBar toolBar = new JToolBar(); // 创建工具栏
        getContentPane().add(toolBar, BorderLayout.NORTH); // 把工具栏放到窗体上方
        final JButton btn_open = new JButton(); // 创建工具按钮
        btn_open.addActionListener(new ActionListener() { // 添加动作监听器
            public void actionPerformed(final ActionEvent arg0) {
                openTextFile(); // 调用方法,操作文件
            }
        });
        btn_open.setText("  打  开  "); // 设置工具按钮的标题
        toolBar.add(btn_open); // 把工具按钮添加到工具栏上
        final JButton btn_exit = new JButton(); // 创建工具按钮
        btn_exit.addActionListener(new ActionListener() { // 添加动作监听器
            public void actionPerformed(final ActionEvent arg0) {
                System.exit(0); // 退出系统
            }
        });
        btn_exit.setText("  退  出  "); // 设置工具按钮的标题
        toolBar.add(btn_exit); // 把工具按钮添加到工具栏上
        final JTabbedPane tabbedPane = new JTabbedPane(); // 创建选项卡面板
        getContentPane().add(tabbedPane, BorderLayout.CENTER); // 把选项卡面板放到窗体中央
        final JScrollPane scrollPane1 = new JScrollPane(); // 创建滚动面板
        // 把滚动面板放到选项卡的第一个选项页
        tabbedPane.addTab("文件的属性", null, scrollPane1, null);
        ta_showProperty = new JTextArea(); // 创建文本域
        // 把文本域添加到滚动面板的视图中
        scrollPane1.setViewportView(ta_showProperty);
        final JScrollPane scrollPane2 = new JScrollPane(); // 创建滚动面板
        // 把滚动面板放到选项卡的第二个选项页
        tabbedPane.addTab("文件的内容", null, scrollPane2, null);
        ta_showText = new JTextArea(); // 创建文本域
        // 把文本域添加到滚动面板的视图中
        scrollPane2.setViewportView(ta_showText);
    }
    
    /**
     * 用于打开文件并获得文件信息的方法
     */
    public void openTextFile() {
        JFileChooser fileChooser = new JFileChooser(); // 创建文件选择对话框
        int returnValue = fileChooser.showOpenDialog(getContentPane()); // 打开文件选择对话框
        if (returnValue == JFileChooser.APPROVE_OPTION) { // 判断用户是否选择了文件
            File file = fileChooser.getSelectedFile(); // 获得文件对象
            // 获得文件的绝对路径
            ta_showProperty.append("文件的绝对路径是:" + file.getAbsolutePath() + "\n");
            // 是否为隐藏文件
            ta_showProperty.append("该文件是隐藏文件吗?" + file.isHidden() + "\n");
            FileReader reader; // 声明字符流
            BufferedReader in; // 声明字符缓冲流
            try {
                reader = new FileReader(file); // 创建字符流
                in = new BufferedReader(reader); // 创建字符缓冲流
                String info = in.readLine(); // 从文件中读取一行信息
                while (info != null) { // 判断是否读到内容
                    ta_showText.append(info + "\n"); // 把读到的信息追加到文本域中
                    info = in.readLine(); // 继续读下一行信息
                }
                in.close(); // 关闭字符缓冲流
                reader.close(); // 关闭字符流
            } catch (Exception ex) {
                ex.printStackTrace(); // 输出栈踪迹
            }
        }
    }
}
  • 运行效果

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值