暑假復習篇之文本編譯器

一、知識點補充【在此次示例代碼上顯示的關鍵用法】

?知識點

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("保存")) {}}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/88551.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/88551.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/88551.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux自動化構建工具(一)

🎁個人主頁:工藤新一 🔍系列專欄:C面向對象(類和對象篇) 🌟心中的天空之城,終會照亮我前方的路 🎉歡迎大家點贊👍評論📝收藏?文章 文章目錄Li…

目標檢測流程圖繪制

目標檢測流程圖繪制作為一個長期科研的苦命人,我一般采用Processon。 一、目標檢測流程圖繪制的 “量身定制” 體驗 Processon 的繪圖元素庫對目標檢測領域極度友好,從基礎模塊到復雜結構都能精準匹配: ??核心組件一鍵調用:在右…

GitHub 趨勢日報 (2025年07月09日)

📊 由 TrendForge 系統生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日報中的項目描述已自動翻譯為中文 📈 今日獲星趨勢圖 今日獲星趨勢圖970genai-toolbox780WebAgent650rustfs451prompt-eng-interactive-tutorial246ai-a…

多云環境下的成本管理挑戰與對策 ——資源碎片化治理與華為CloudMatrix破局之道

一、危機:多云成本失控已成企業“隱形殺手”成本超支概率激增據Gartner 2024報告,采用多云策略的企業成本超支概率比單云企業高47%,主因資源碎片化導致的閑置浪費和管控失效。觸目驚心的數據:73%企業云成本占營收超20%&#xff0c…

Linux的基礎I/O

目錄 1、理解“文件” 1.1 狹義理解 1.2 廣義理解 1.3 文件操作的歸類認知 1.4 系統角度 2、回顧C文件接口 2.1 文件的打開與關閉 2.2 文件的讀寫函數 2.3 stdin & stdout & stderr 3、系統文件I/O 3.1 一種傳標志位的方式 3.2 文件的系統調用接口 3.2.1 o…

廣告匹配策略的智能化之路:人工智能大模型的方法和步驟

摘要 廣告匹配策略是指根據用戶的需求和偏好,向用戶推薦最合適的廣告的方法。廣告匹配策略的優化是數字化營銷的核心問題之一,也是提升廣告效果和收益的關鍵因素。本文介紹了如何利用人工智能大模型,從數據分析、廣告推薦、策略優化、效果評…

飛算JavaAI:重塑Java開發的“人機協同“新模式

引言 在Java開發領域,“效率"與"質量"的平衡始終是開發者面臨的核心挑戰——重復編碼消耗精力、復雜業務易出漏洞、老系統重構舉步維艱。飛算JavaAI的出現,并非簡單地用AI替代人工,而是構建了一套"AI處理機械勞動&#…

運行ssh -T git@github.com報錯

運行ssh -T gitgithub.com報錯 no such identity: /root/.ssh/id_rsa: No such file or directory gitssh.github.com: Permission denied (publickey). 如果我用的是ed25519而非rsa,有id_ed25519 則需要打開~/.ssh/config檢查一下是否寫錯了 vim ~/.ssh/config 然后…

20250710-2-Kubernetes 集群部署、配置和驗證-網絡組件存在的意義?_筆記

一、網絡組件的作用1. 部署網絡組件的目的核心功能:執行kubectl apply -f calico.yaml命令的主要目的是為Kubernetes集群部署網絡組件必要性:解決Pod間的跨節點通信問題建立集群范圍的網絡平面,使所有Pod處于同一網絡…

【牛客刷題】dd愛科學1.0

文章目錄 一、題目介紹1.1 題目描述1.2 輸入描述:1.3 輸出描述:1.4 示例1二、解題思路2.1 核心策略2.2 算法流程2.3 正確性證明三、算法實現四、關鍵步驟解析五、復雜度分析六、正確性驗證七、算法對比7.1 暴力搜索法7.2 動態規劃7.3 三種解法對比分析一、題目介紹 1.1 題目描…

跑步-Java刷題 藍橋云課

目錄 題目鏈接 題目 解題思路 代碼 題目鏈接 競賽中心 - 藍橋云課 題目 解題思路 用數組記錄每個月有多少天,再使用一個int型變量記錄是星期幾,遍歷即可 代碼 import java.util.Scanner; // 1:無需package // 2: 類名必須Main, 不可修改public class Main {public stat…

Qt常用控件之QWidget(二)

Qt常用控件(二)1.window frame2.windowTitle3.windowIcon🌟🌟hello,各位讀者大大們你們好呀🌟🌟 🚀🚀系列專欄:【Qt的學習】 📝📝本篇…

飛算Java AI:專為 Java 開發者打造的智能開發引擎

目錄 一,核心功能 1,智能編碼(AI Coding) 2,AI 驅動測試(AI Testing) 3,智能運維(AIOps) 4,工程化支持 二、注冊與上手:3 分鐘快…

基于開源AI大模型AI智能名片S2B2C商城小程序源碼的私域流量新生態構建

摘要:私域流量并非新生概念,企業持續構建和經營“企業 - 客戶”關系是其持續存在的關鍵,且會隨時代發展自我完善迭代。本文探討了開源AI大模型AI智能名片S2B2C商城小程序源碼在私域流量領域的應用價值。通過分析私域流量發展現狀與挑戰&#…

用 ELK+Filebeat 提高50%問題排查效率,這套方案實測有效!

摘要 在中大型系統中,日志的分布常常讓問題排查變得異常痛苦:每次出錯都要登錄一堆服務器、翻一堆文本,還不一定能找到關鍵線索。為了解決這個問題,ELK(Elasticsearch、Logstash、Kibana)日志聚合平臺應運而…

數據治理到底是什么?搞清這四件事,你就徹底明白了!

目錄 第一件事:數據治理不是做“數據”,是做“管” 第二件事:治理的核心,是“數、責、權”的三角綁定 一是“數”:你到底有哪些數據? 二是“責”:每張表、每個字段是誰負責? 三…

Spring的事務控制——學習歷程

思考:1. 事務是干什么的?2. 事務的特性?3. 事務控制的傳播方式(傳播行為)4. 事務的隔離級別5. 事務是如何實現的?6. 事務的回滾方式7. 事務失效場景回答:1. 事務和鎖,還有版本控制 …

鴻蒙 Secure Boot 全流程解析:從 BootROM 到內核簽名驗證的實戰指南

摘要 隨著智能設備應用的深入,操作系統安全成為設備可信運行的基礎。在物聯網和多終端場景中,一旦系統被惡意篡改,將帶來數據泄露、設備被控等嚴重后果。鴻蒙系統在安全啟動方面設計了完整的機制,從最底層的 Boot ROM 開始逐級校驗…

tailwindCSS === 使用插件自動類名排序

目錄 類如何排序 自定義 實戰應用 .prettierrc package .eslintrc 人們一直在討論在 Tailwind 項目中對實用程序類進行排序的最佳方法。今天,我們很高興地宣布,隨著我們官方 prettier-plugin-tailwindcss 的發布,您終于可以不用為此擔…

數據結構 —— 鍵值對 map

目錄 map的若干操作 1、emplace() 2、find(key) 3、count(key) 4、lower_bound 和 upper_bound 5、erase() 6、empty() 7、降序的map 計蒜客T3603 叫號系統 題意: 解題思路: Code: Leetcode1309 解碼字母到整數映射 題意: 解題…