一、知識點補充【在此次示例代碼上顯示的關鍵用法】
?知識點
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("保存")) {}}}