在探讨C语言编程文本编辑器的最佳选择与专业推荐时,本文将引导读者构建一个基础的文本编辑器程序。该程序不仅能够打开并显示文本文件的内容及其路径,还集成了菜单和工具栏功能,为用户提供更加便捷的操作体验。通过本案例的学习,读者可以深入了解文本编辑器的核心实现机制。
最简单的文本编辑器是Windows记事本。 在学习本章的知识后,这次的案例将完成一个简单的文本编辑器程序。 可以打开文本文件并输出文本文件的位置和内容。 其中使用了菜单、工具栏、选项卡等组件,是一个综合的APP应用程序,主要实现步骤如下。
(1)创建TextFileOpener类,继承JFrame的父类。
打包通道18;
import java.awt.BorderLayout;
import Java.awt.event.actionevent;
导入Java.awt.event.action listener;
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.file chooser.filenameextensionfilter;
publicclasstextfileopenerextendsjframe
{
privatestaticfinallOngserialversionuid=-9077023825514749548 l;
私有jtextarea ta _ show text; 定义显示//文件属性的文本字段
privatejtextareata _ show property; //定义显示文件内容的文本字段
//Launch the application。
publicstaticvoidmain (字符串[ ] args ) )。
{
textfileopenerframe=newtextfileopener (;
frame.setvisible(true;
}
}
(2)构建方法中的布局设置。 包括将事件侦听到窗口大小、菜单栏和菜单项、工具栏以及每个组件,主要实现代码如下:
公共文本文件操作器(
{
setTitle (文本编辑器); //设置表单标题
set bounds (100、100、400、250 ); //设置表单的位置和大小
setdefaultcloseoperation (jframe.dispose _ on _ close; //设置窗体的默认关闭方式
finaljmenubarmenubar=newjmenubar (; //创建菜单栏
setjmenubar(menubar; //将菜单栏置于窗体上
final JMenu mn_file=new JMenu (; //文件创建菜单
mn_file.setText (文件); //设置文件菜单的标题
menubar.add(Mn_file; //向菜单栏添加文件菜单
finaljmenuitemmi _ open=newjmenuitem (; //创建要打开的菜单项
mi _ open.addactionlistener (newactionlistener ) )。
{
//添加监听程序以打开菜单项
公共语音性能(finalactioneventarg0) )。
{
openTextFile (; 调用//方法并处理文件
}
);
mi_open.setText ('打开'); //设置要打开的菜单项的标题
Mn_file.add(mi_open; //将要打开的菜单项添加到文件菜单
mn_file.addSeparator (; //添加菜单分隔符
finaljmenuitemmi _ exit=newjmenuitem (; //创建退出菜单项
mi _ exit.addactionlistener (newactionlistener ) )。
{
//向退出菜单项添加监听程序
/p>
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 所示为查看文件内容效果。单击“退出”按钮,可以关闭程序。
图1 查看文件属性
图2 查看文件内容