最简单的文本编辑器要数 Windows 的记事本了。在学习了本章知识之后,本次案例将完成一个简单的文本编辑器程序。它可以打开文本文件,并输出文本文件的位置和内容。其中用到了菜单、工具栏以及选项卡等组件,是一个综合类的应用,主要实现步骤如下。

(1) 创建一个 TextFileOpener 类并继承 JFrame 父类。

import java.awt.BorderLayout;
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.filechooser.FileNameExtensionFilter;
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){TextFileOpener frame=new TextFileOpener();frame.setVisible(true);}
}

(2) 在构造方法中布局的设置,包括窗口大小、菜单栏和菜单项、工具栏,以及对各个组件的事件监听,主要实现代码如下所示。

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);
}

(3) 无论是从菜单栏还是工具栏选择“打开”文件操作时都是调用 openTextFile() 方法。该方法会弹出文件选择器让用户选择一个文件,然后使用文件流获取文件属性和读取文件的内容,再把信息呈现到界面上。openTextFile() 方法的实现代码如下:

//用于打开文件并获得文件信息的方法
public void openTextFile()
{JFileChooser fileChooser=new JFileChooser();    //创建文件选择对话框fileChooser.setFileFilter(new FileNameExtensionFilter("文本文件","txt"));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();    //输出栈踪迹}}
}

(4) 运行程序,单击“打开”按钮,选择一个 TXT 文件。图 1 所示为查看文件属性效果,图 2 所示为查看文件内容效果。单击“退出”按钮,可以关闭程序。

25、Java Swing文本编辑器的实现相关推荐

  1. Swing学习25:Java Swing文本编辑器的实现

    最简单的文本编辑器要数 Windows 的记事本了.在学习了本章知识之后,本次案例将完成一个简单的文本编辑器程序.它可以打开文本文件,并输出文本文件的位置和内容.其中用到了菜单.工具栏以及选项卡等组件 ...

  2. JAVA写文本编辑器(四)

    其实写到这里,我已经差不多断气了... 常规套路,这里是前三篇的传送门,需要的同学可以看一下:JAVA写文本编辑器(三) JAVA写文本编辑器(二)JAVA写文本编辑器(一) 现在我们只差最后一部分了 ...

  3. java swing做输入框,java Swing 文本框的使用

    /** * Java Swing 文本框控件 * @author gao */ package com.gao; import java.awt.GridLayout; import javax.sw ...

  4. JAVA写文本编辑器(一)

    作业题,花了整整两天终于搞出来了,今天给大家整理一下思路. 这里用swing ,awt写的. 我们大概要做成一个电脑的记事本那样的一个编辑器.可以调整字体,字号,颜色.能够打开.保存文件,新建窗口,点 ...

  5. java 文本编辑器_「java文本编辑器」用Java实现文本编辑器 - seo实验室

    java文本编辑器 源码里有注释:import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; ...

  6. java 富文本编辑器的标签处理数据 从数据库中取出 并返回前台

    总结: 1.使用 HtmlUtils.htmlEscape ()方法对 字符串中的标签转义 2.使用 removeHtmlTag() 得数据 具体步骤如下: 我的数据库的存储格式被转义过了,这个因人而 ...

  7. java html文本编辑器,基于Java WebHTML在线文本编辑器解决方案.doc

    基于Java WebHTML在线文本编辑器解决方案 基于Java WebHTML在线文本编辑器解决方案 摘要:FckEditor作为众多优秀HTML在线文本编辑器之一,以其支持多语言的优势而受到众多国 ...

  8. java富文本编辑器KindEditor

    在页面写一个编辑框: <textarea name="content" class="form-control" id="content&quo ...

  9. 我做的一个java简单文本编辑器代码

    下面是我的一个简单java程序代码,可以练习下. 有的功能没弄完,有兴趣的可以完成他,对学java 很有帮助. package swing; import java.awt.*; import jav ...

最新文章

  1. 直播实录QA | 王赟Maigo分享“知识连成一片”是怎样一种体验
  2. 代码检查规则背景及总体介绍
  3. 如何使用 C# 中的 ValueTask
  4. Linux加密框架crypto AES代码相关
  5. 8266获取网络时间
  6. [JAVA-坑]CGLib动态代理引起的空指针异常
  7. Golang import 包时可以使用相对路径吗
  8. 为什么大公司只喜欢招985 211?学历真的很重要?
  9. 关于Android中为什么主线程不会因为Looper.loop()里的死循环卡死?引发的思考,事实可能不是一个 epoll 那么 简单。...
  10. 达芬奇DaVinci Resolve Studio Mac v17.4.6
  11. 面试遇到不会回答的问题,如何力挽狂澜 ?
  12. GARFIELD@03-23-2005
  13. PAIP.WEB程序网站安全扫描检测工具(桌面程序)总结
  14. MagicAjax C#版试用手记
  15. 使用git管理工具sourcetree拉取代码
  16. Java实现本地缓存
  17. 打造家庭影音网络:Gen8魔改ITX实现Esxi虚拟NAS+Openwrt+Win10
  18. 一个产品的风险预测怎么写_创业计划书中,项目风险评估怎么写?
  19. 学习计划 -- 实时更新
  20. 圈内著名ts_TS欠薪几百万遭实锤,阿泰被玩弄于股掌,权谋剧情比宫斗还精彩...

热门文章

  1. Py之skflow:skflow的简介、安装、使用方法、代码实现之详细攻略
  2. DL之YoloV3:YoloV3论文《YOLOv3: An Incremental Improvement》的翻译与解读
  3. Spark SQL 函数全集
  4. 把接口作为函数的参数,那么任何实现了接口的类的实例都可以作为此函数的参数传递...
  5. hdu-4811 Ball
  6. xpool, cpool,epoo
  7. JavaEE5种常见的设计模式
  8. Object C学习笔记12-集合
  9. php的array_multisort()使用
  10. oracle更改字段名顺序的方法