电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

教你用Java GUI實(shí)現(xiàn)文本文件的讀寫

瀏覽:105日期:2022-08-12 09:27:17
目錄一、實(shí)驗(yàn)題目二、分析三、實(shí)現(xiàn)四、全部代碼一、實(shí)驗(yàn)題目

教你用Java GUI實(shí)現(xiàn)文本文件的讀寫

二、分析

實(shí)驗(yàn)要求為:

實(shí)現(xiàn)一個(gè)界面,界面中包含一個(gè)文本顯示區(qū)和兩個(gè)按鈕(存檔和讀檔) 讀檔按鈕作用是打開文件并讀取內(nèi)容,將內(nèi)容顯示在文本區(qū)中 存檔按鈕作用是將文本區(qū)的內(nèi)容寫入到文件中。

簡單分析一下,可以看出這樣的要求奧,包含的要考察知識(shí)點(diǎn)主要有兩個(gè)方向:

GUI繪制界面并添加事件 使用IO流對(duì)象對(duì)文件進(jìn)行讀寫

好的小伙伴們,廢話不多說,下面就來的實(shí)現(xiàn)它。

三、實(shí)現(xiàn)

首先,讓我們創(chuàng)建一個(gè)GUI界面,先秉持著一切從簡的設(shè)計(jì)思想,預(yù)計(jì)它長這樣:

教你用Java GUI實(shí)現(xiàn)文本文件的讀寫

這樣的布局方式,我們可以選擇采用流布局實(shí)現(xiàn),在容器中直接放入文本顯示區(qū)和兩個(gè)按鈕,適當(dāng)調(diào)整窗口大小即可實(shí)現(xiàn):

import java.awt.Container;import java.awt.FlowLayout;import java.awt.TextArea;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;public class GUIDemo extends JFrame{//三個(gè)組件private JButton saveButton;private JButton loadButton;private TextArea textArea;//容器private Container container;public GUIDemo() {//設(shè)置titlesuper('File Demo');//設(shè)置流布局setLayout(new FlowLayout());//獲取容器container = getContentPane();//三個(gè)組件textArea = new TextArea();saveButton = new JButton('save');loadButton = new JButton('load');//保存文件按鈕點(diǎn)擊事件saveButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println('存檔成功');}});//讀入文件按鈕點(diǎn)擊事件loadButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println('讀檔成功');}});//裝填三個(gè)組件container.add(textArea);container.add(loadButton);container.add(saveButton);//調(diào)整大小setSize(500, 300);//顯示setVisible(true);}public static void main(String[] args) {GUIDemo demo = new GUIDemo();demo.setDefaultCloseOperation(EXIT_ON_CLOSE);}}

代碼的含義都在注釋里面,就不??陸步飭恕?/p>

跑起來是這個(gè)樣子:

教你用Java GUI實(shí)現(xiàn)文本文件的讀寫

點(diǎn)擊兩下按鈕測試點(diǎn)擊事件,控制臺(tái)輸出:

教你用Java GUI實(shí)現(xiàn)文本文件的讀寫

好的,GUI界面設(shè)計(jì)完畢,下面來為兩個(gè)按鈕編寫點(diǎn)擊事件。

首先要解決的一個(gè)問題是“目標(biāo)文件”。由于題目中沒有提到目標(biāo)文件是否需要從文件系統(tǒng)中選取產(chǎn)生,那么我們不妨?xí)簳r(shí)將目標(biāo)文件地址直接在代碼中,令private static final String TARGET_FILE= './temp.txt';

教你用Java GUI實(shí)現(xiàn)文本文件的讀寫

那么在初始化頁面時(shí)就應(yīng)該先創(chuàng)建這個(gè)文件路徑對(duì)應(yīng)的file對(duì)象:

//目標(biāo)文件private File targetFile;...//創(chuàng)建目標(biāo)文件對(duì)象targetFile = new File(TARGET_FILE);if(targetFile.createNewFile()) {System.out.println('文件不存在,創(chuàng)建成功');}else {System.out.println('文件存在');}

這里需要注意幾個(gè)問題:

1.創(chuàng)建目標(biāo)文件需要使用createNewFile()方法,而非mkdir()方法。否則會(huì)創(chuàng)建成為文件夾而非文件

2.createNewFile()方法會(huì)拋出一個(gè)IOException,為了便于處理,這里直接選擇將異常從構(gòu)造方法和主方法中拋出;

教你用Java GUI實(shí)現(xiàn)文本文件的讀寫教你用Java GUI實(shí)現(xiàn)文本文件的讀寫

教你用Java GUI實(shí)現(xiàn)文本文件的讀寫

教你用Java GUI實(shí)現(xiàn)文本文件的讀寫

處理好目標(biāo)文件問題,兩次啟動(dòng)程序,可以看到控制臺(tái)輸出:

教你用Java GUI實(shí)現(xiàn)文本文件的讀寫教你用Java GUI實(shí)現(xiàn)文本文件的讀寫

哦吼,文件處理成功。

接著,就是在為兩個(gè)按鈕添加點(diǎn)擊事件。在下面的處理中,對(duì)于IO流的選擇,我們統(tǒng)一選擇字符流.

首先是讀檔按鈕,它的點(diǎn)擊事件邏輯大致為:

1.創(chuàng)建目標(biāo)文件的輸入字符流

2.從輸入流中讀取文件中的內(nèi)容并形成結(jié)果

3.關(guān)閉輸入流

4.將讀入的結(jié)果顯示在文本顯示區(qū)中

實(shí)現(xiàn)成為代碼:

//讀入文件按鈕點(diǎn)擊事件loadButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {try {//字符讀入流FileReader reader = new FileReader(targetFile);//讀入緩沖區(qū)char[] buffer = new char[1024];//讀入結(jié)果StringBuffer result = new StringBuffer();//每次讀入緩沖區(qū)的長度int len;//從讀入流中讀取文件內(nèi)容并形成結(jié)果while((len = reader.read(buffer)) != -1) {result.append(buffer,0,len);}//關(guān)閉讀入流reader.close();//更新文本顯示區(qū)內(nèi)容textArea.setText(result.toString());System.out.println('讀檔成功');} catch (FileNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}});

在目標(biāo)文件中寫下Hello World!!,運(yùn)行程序,點(diǎn)擊load:

教你用Java GUI實(shí)現(xiàn)文本文件的讀寫

nice~~

好的,接下來就剩下最后一項(xiàng)任務(wù)了,完成存檔!

存檔按鈕的點(diǎn)擊事件應(yīng)該為:

1.打開目標(biāo)文件字符輸出流

2.獲取當(dāng)前文本顯示區(qū)的內(nèi)容

3.將文本顯示區(qū)的內(nèi)容通過輸出流寫入文件

4.關(guān)閉輸出流

5.清空文本顯示區(qū)

哦吼,最后一條是我加上去的,其實(shí)不清空也可以。

代碼實(shí)現(xiàn)如下:

//保存文件按鈕點(diǎn)擊事件saveButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {try {//打開文件字符輸出流FileWriter writer = new FileWriter(targetFile);//獲取文本顯示區(qū)文本String result = textArea.getText();//寫入文件writer.write(result);//關(guān)閉輸出流writer.close();//清空文本顯示區(qū)內(nèi)容textArea.setText('');System.out.println('存檔成功');} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}});

在文本顯示區(qū)中輸入Hello Java!!,點(diǎn)擊save:

教你用Java GUI實(shí)現(xiàn)文本文件的讀寫

啥?你說文本框里面啥也沒有?對(duì),因?yàn)樽詈蟀褍?nèi)容清空了!

四、全部代碼

好了,實(shí)現(xiàn)了上面的全部功能,最后把代碼匯總在這里:

(謹(jǐn)慎抄襲哦)

import java.awt.Container;import java.awt.FlowLayout;import java.awt.TextArea;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import javax.swing.JButton;import javax.swing.JFrame;public class GUIDemo extends JFrame{private static final String TARGET_FILE = './temp.txt';//三個(gè)組件private JButton saveButton;private JButton loadButton;private TextArea textArea;//容器private Container container;//目標(biāo)文件private File targetFile;public GUIDemo() throws IOException {//設(shè)置titlesuper('File Demo');//設(shè)置流布局setLayout(new FlowLayout());//獲取容器container = getContentPane();//創(chuàng)建目標(biāo)文件對(duì)象targetFile = new File(TARGET_FILE);if(targetFile.createNewFile()) {System.out.println('文件不存在,創(chuàng)建成功');}else {System.out.println('文件存在');}//三個(gè)組件textArea = new TextArea();saveButton = new JButton('save');loadButton = new JButton('load');//保存文件按鈕點(diǎn)擊事件saveButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {try {//打開文件字符輸出流FileWriter writer = new FileWriter(targetFile);//獲取文本顯示區(qū)文本String result = textArea.getText();//寫入文件writer.write(result);//關(guān)閉輸出流writer.close();//清空文本顯示區(qū)內(nèi)容textArea.setText('');System.out.println('存檔成功');} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}});//讀入文件按鈕點(diǎn)擊事件loadButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {try {//字符讀入流FileReader reader = new FileReader(targetFile);//讀入緩沖區(qū)char[] buffer = new char[1024];//讀入結(jié)果StringBuffer result = new StringBuffer();//每次讀入緩沖區(qū)的長度int len;//從讀入流中讀取文件內(nèi)容并形成結(jié)果while((len = reader.read(buffer)) != -1) {result.append(buffer,0,len);}//關(guān)閉讀入流reader.close();//更新文本顯示區(qū)內(nèi)容textArea.setText(result.toString());System.out.println('讀檔成功');} catch (FileNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}});//裝填三個(gè)組件container.add(textArea);container.add(loadButton);container.add(saveButton);//調(diào)整大小setSize(500, 300);//顯示setVisible(true);}public static void main(String[] args) throws IOException {GUIDemo demo = new GUIDemo();demo.setDefaultCloseOperation(EXIT_ON_CLOSE);}}

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 标策网-专注公司商业知识服务、助力企业发展 | 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 | 科昊仪器超纯水机系统-可成气相液氮罐-美菱超低温冰箱-西安昊兴生物科技有限公司 | 九州网址_专注于提供网址大全分享推广中文网站导航服务 | 衢州装饰公司|装潢公司|办公楼装修|排屋装修|别墅装修-衢州佳盛装饰 | 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 | 上海佳武自动化科技有限公司| 网站优化公司_北京网站优化_抖音短视频代运营_抖音关键词seo优化排名-通则达网络 | 扒渣机,铁水扒渣机,钢水扒渣机,铁水捞渣机,钢水捞渣机-烟台盛利达工程技术有限公司 | 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | 沧州友城管业有限公司-内外涂塑钢管-大口径螺旋钢管-涂塑螺旋管-保温钢管生产厂家 | 【同风运车官网】一站式汽车托运服务平台,验车满意再付款 | 氧氮氢联合测定仪-联测仪-氧氮氢元素分析仪-江苏品彦光电 | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 儋州在线-儋州招聘找工作、找房子、找对象,儋州综合生活信息门户! | 数控车床-立式加工中心-多功能机床-小型车床-山东临沂金星机床有限公司 | 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 | 骨灰存放架|骨灰盒寄存架|骨灰架厂家|智慧殡葬|公墓陵园管理系统|网上祭奠|告别厅智能化-厦门慈愿科技 | 除尘器布袋骨架,除尘器滤袋,除尘器骨架,电磁脉冲阀膜片,卸灰阀,螺旋输送机-泊头市天润环保机械设备有限公司 | 珠光砂保温板-一体化保温板-有釉面发泡陶瓷保温板-杭州一体化建筑材料 | 济南展厅设计施工_数字化展厅策划设计施工公司_山东锐尚文化传播有限公司 | 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 除甲醛公司-甲醛检测-广西雅居环境科技有限公司 | 高速混合机_锂电混合机_VC高效混合机-无锡鑫海干燥粉体设备有限公司 | 岛津二手液相色谱仪,岛津10A液相,安捷伦二手液相,安捷伦1100液相-杭州森尼欧科学仪器有限公司 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 密集柜_档案密集柜_智能密集架_密集柜厂家_密集架价格-智英伟业 密集架-密集柜厂家-智能档案密集架-自动选层柜订做-河北风顺金属制品有限公司 | 浴室柜-浴室镜厂家-YINAISI · 意大利设计师品牌 | 咿耐斯 |-浙江台州市丰源卫浴有限公司 | 石家庄装修设计_室内家装设计_别墅装饰装修公司-石家庄金舍装饰官网 | 集菌仪厂家_全封闭_封闭式_智能智能集菌仪厂家-上海郓曹 | 金库门,金库房,金库门厂家,金库门价格-河北特旺柜业有限公司 | 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 苏州西朗门业-欧盟CE|莱茵UL双认证的快速卷帘门品牌厂家 | 超声波清洗机_细胞破碎仪_实验室超声仪器_恒温水浴-广东洁盟深那仪器 | 顺景erp系统_erp软件_erp软件系统_企业erp管理系统-广东顺景软件科技有限公司 | 德国GMN轴承,GMN角接触球轴承,GMN单向轴承,GMN油封,GMN非接触式密封 | 扫地车厂家-山西洗地机-太原电动扫地车「大同朔州吕梁晋中忻州长治晋城洗地机」山西锦力环保科技有限公司 | 广州冷却塔维修厂家_冷却塔修理_凉水塔风机电机填料抢修-广东康明节能空调有限公司 | 无锡装修装潢公司,口碑好的装饰装修公司-无锡索美装饰设计工程有限公司 | 气动调节阀,电动调节阀,自力式压力调节阀,切断阀「厂家」-浙江利沃夫自控阀门 |