一、知识点补充【在此次示例代码上显示的关键用法】
知识点
1、JMenuBar:菜单栏的容器,通常添加到JFrame的顶部。
关键用法:
- add: 添加菜单到菜单栏
2、JMenu:菜单条目(“文件” “编辑” 等),继承自JMenuItem,可添加到JMenuBar中
关键用法:
- add:添加菜单项
3、JMenuItem:菜单项(“新建” “复制” 等),可添加到JMenu中
注意:JMenuBar默认流式布局
4、JScrollPanel 是Java Swing中的一个组件,用于为其他组件提供滚动功能,只有组件内容超出显示区域时,它就会自动添加水平或者垂直滚动条,使用户可以查看完整内容。
5、JTextPanel 是Java Swing中的高级文本编辑组件,继承自JEditorPane,支持文本编辑,允许设置文本的字体、颜色、样式,并可嵌入图像、超链接等元素,合适创建需要格式化显示的文本界面。
6、JFileChooser : 文件选择对话框,用于打开和保存文件
7、FileNameExtensionFilter 是Java Swing库中的一个类,用于在文件选择对话框中过滤和显示特定类型的文件,它只允许用户看到符合指定文件扩展名的文件,从而简化文件选择过程。
核心构造方法:FileNameExtensionFilter(String description,String extensions)
description:文件类型的描述文本(“文本文件”等)
extensions:允许的文件扩展名数组(“text” “pdf”等)
文本编辑器大概内容
①需要一个窗体
②增加一组菜单: 打开 保存 等功能
③窗体内设置一个文本域 用于显示和编辑文本
④扩展实现:字体修改,文本尺寸修改 缩放等等
二、代码示例
package daytoday.lfx250710;import javax.swing.*;public class TextEdit {public void showUI(){JFrame jf = new JFrame();jf.setTitle("文本编辑器");jf.setSize(400, 300);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jf.setLocationRelativeTo(null);//菜单占用标题栏空间JMenuBar jmb = new JMenuBar();//菜单栏JMenu jm = new JMenu("文件");//菜单JMenu jm1 = new JMenu("编辑");JMenu jm2 = new JMenu("查看");JMenuItem newJmi = new JMenuItem("新建");//菜单项JMenuItem openJmi = new JMenuItem("打开");JMenuItem saveJmi = new JMenuItem("保存");JMenuItem exitJmi = new JMenuItem("退出");jm.add(newJmi);jm.add(openJmi);jm.add(saveJmi);jm.add(exitJmi);jmb.add(jm);jmb.add(jm1);jmb.add(jm2);//将菜单栏设置到窗体上jf.setJMenuBar(jmb);//文本域JTextPane jtp = new JTextPane();JScrollPane jsp = new JScrollPane(jtp);//滑动面板jf.add(jsp);jf.setVisible(true);TextListener tl = new TextListener();openJmi.addActionListener(tl);saveJmi.addActionListener(tl);exitJmi.addActionListener(tl);tl.jtp = jtp;}public static void main(String[] args) {TextEdit textEdit = new TextEdit();textEdit.showUI();}
}
package daytoday.lfx250710;import javax.imageio.IIOException;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.filechooser.FileNameExtensionFilter;public class TextListener implements ActionListener {JTextPane jtp;JFileChooser jfc = new JFileChooser();@Overridepublic void actionPerformed(ActionEvent e) {String ac = e.getActionCommand();System.out.println("ac" + ac);if (ac.equals("打开")){//文件名过滤FileNameExtensionFilter filter = new FileNameExtensionFilter("文本文件", "txt");jfc.setFileFilter( filter);//设置过滤器//文件选择器/*showOpenDialog()方法显示 打开文件 的对话框参数null表示对话框的父组件为null (即显示会话框在屏幕中间)*/int showOpenDialog = jfc.showOpenDialog(null);if (showOpenDialog == JFileChooser.APPROVE_OPTION){//处理用户选择的文件File selectedFile = jfc.getSelectedFile();//获取用户选择的文件String path = selectedFile.getPath();//获取文件路径System.out.println("path" + path);try {//读取文件FileReader frd = new FileReader(selectedFile);BufferedReader brd = new BufferedReader(frd);String line;String text = "";while ((line = brd.readLine()) != null) {text += line + "\n";}jtp.setText(text);}catch (IOException ioe){ioe.printStackTrace();}}}else if(ac.equals("新建")){} else if (ac.equals("保存")) {}}}