手把手教你用Java打造一款簡單故事書(下篇)

2020-12-24 海牛大數據

上篇文章,我們介紹了故事書的理論內容,這篇文章,我們一起來看具體的代碼實現。,具體教程如下。

一、項目背景

隨著移動網際網路的發展,電子版的書成為現在主流,針對用戶的需求,有的放矢地呈現給用戶,閱讀電子版書,提高他們的學習效率。

二、項目目標

1.實現美觀的界面。

2.能夠基本實現改變字號、字體、字形、顏色、壁紙等選擇,按鈕頁面切換功能。

3.java讀取txt文件,簡化代碼。

三、項目實施

首先回顧上一節的手把手教你用Java打造一款簡單故事書(上篇),完成界面的窗口、菜單欄、上下頁的按鈕,效果如下圖所示。

接下來,小編帶大家完成剩下的功能,具體的實現步驟如下。

(一)顯示背景圖,完成界面設計

1.setOpaque設置控制項是否透明的,true表示不透明,false表示透明;

text01.setOpaque(false);panel01.setOpaque(false);label.setBounds(0,0,bg.getIconWidth(),bg.getIconHeight());//設置邊界imagePanel=(JPanel)this.getContentPane();//獲取窗體的內容面板imagePanel.setOpaque(false);//設置透明this.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));

2.把背景圖添加到分層窗格的最底層;

label.setBounds(0,0,bg.getIconWidth(),bg.getIconHeight());//設置邊界imagePanel=(JPanel)this.getContentPane();//獲取窗體的內容面板imagePanel.setOpaque(false);//設置透明this.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));

效果圖如下圖所示:

(二)添加事件監聽器MyListener(自己命名)

1.頁面切換按鈕功能的實現:

classMyListenerimplementsActionListener{@OverridepublicvoidactionPerformed(ActionEvent e){// TODO Auto-generated method stub//此處添加事件處理的代碼if(e.getSource()==btn_last){//上一頁if(papeNum>1){//不是第一頁 papeNum--; btn_last.setEnabled(true); btn_next.setEnabled(true); } if(papeNum==1){ btn_last.setEnabled(false); btn_next.setEnabled(true); }}if(e.getSource()==btn_next){//下一頁if(papeNum<str.length){//不是最後一頁 papeNum++; btn_last.setEnabled(true); btn_next.setEnabled(true); } if(papeNum==str.length){ btn_last.setEnabled(true); btn_next.setEnabled(false); }} text01.setText(str[papeNum-1]);

2.字號、字體、字形功能的實現:

if(e.getSource()==twelf)//字號12 size=12; if(e.getSource()==fiveteen)//字號15 size=15; if(e.getSource()==eighteen)//字號18 size=18; if(e.getSource()==twenty)//字號20 size=20; if(e.getSource()==song)//字體宋體 style="宋體"; if(e.getSource()==hei)//字體黑體 style="黑體"; if(e.getSource()==kai)//字體楷體 style="楷體"; if(e.getSource()==chang)//字形常規 pattern=Font.PLAIN; if(e.getSource()==jia)//字形加粗 pattern=Font.BOLD; if(e.getSource()==qing)//字形傾斜 pattern=Font.ITALIC; text01.setFont(new Font(style,pattern,size));

3.顏色、換壁紙功能的實現:

if(e.getSource()==red)//顏色紅色 text01.setForeground(Color.red); if(e.getSource()==green)//顏色綠色 text01.setForeground(Color.green); if(e.getSource()==blue)//顏色藍色 text01.setForeground(Color.blue); if(e.getSource()==swap){//換壁紙photoNum++;if(photoNum>=6) photoNum=1;label.setIcon(new ImageIcon("photo//photo"+photoNum+".jpg"));}

4.程序中顯示文字是以String數組形式存儲,這種方式比較方便易懂,但卻使得代碼較多。因此,在文字較多情況下,應考慮以txt文檔形式存儲故事文字,在程序中讀取文檔內容,以顯示在窗口中。

(1)讀取Txt文件:在main主程序寫以下代碼:

FileInputStream流被稱為文件字節輸入流,意思指對文件數據以字節的形式進行讀取操作如讀取圖片視頻等。

FileInputStream inStream0= new FileInputStream("story//s01.txt");FileInputStream inStream1= new FileInputStream("story//s02.txt");FileInputStream inStream2= new FileInputStream("story//s03.txt");str[0]= s.readFile(inStream0);str[1]=s.readFile(inStream1);str[2]=s.readFile(inStream2);text01.setText(str[0]);

(2)讀取文件中內容的方法:

public String readFile(InputStream inStream){//讀取文件中的內容byte[] buffer =newbyte[2048]; int hasRead=0;//已經讀取的字節數 StringBuffer sBuffer=new StringBuffer(); try{ while( (hasRead = inStream.read(buffer))!=-1){//還沒有讀完 sBuffer.append(new String(buffer,0,hasRead,"GBK")); } inStream.close(); }catch(Exception e){ e.printStackTrace(); }return sBuffer.toString(); } }

5.標籤本來是一種最簡單的組件,為什麼可以將它設置成為一個窗體的背景呢?

答案:(1)首先還是要了解框架JFrame中的層次結構。JFrame中的層次分布及相對關係是:最底層是JRootPane,第二層是JlayerPane,最上層就是ContentPane,也正是我們常說的內容面板。

(2)所以一般我們拖放的控制項就是在ContentPane層上。也就是說我們只需將背景圖片放在JFrame的第二層是JlayerPane上,再把內容面板ContentPane設置為透明,則第二層JlayerPane上放置的圖片即成為內容面板的背景了。

四、總結

本文主要介紹了JPanel、JButton、JLabel、JTextArea、JMenu、JMenuItem等組件的基本使用,以及相應的事件處理。

以上就是今天的內容了,如果對你有所幫助,希望你能夠關注、點讚、轉發一鍵三連支持一下。

需要完整學習線路和配套課堂筆記,請後臺111。

相關焦點

  • 手把手帶你用Java打造一款對對碰遊戲之一
    一、項目背景隨著移動網際網路技術的快速發展,智慧型手機、智能平板的興起和不斷的普及,我國移動遊戲行業迅速發展,在遊戲產業中佔據舉足輕重的地位。對對碰遊戲是一款經典的消除類遊戲,玩家只要點擊圖案來使圖案之間互換位置,連成3個或3個以上圖案來消除,得到相應的分數。二、項目目標設計一款基於JAVA的遊戲,顯示64 (8*8 )個動物圖片,遊戲開始時,進入100s倒數,用戶點擊相應的動物圖片,如果有三個或以上相同,則成功消除,並每個得10分。
  • 手把手帶你用Java打造一款對對碰遊戲(下篇)
    (一)添加DuiDuiPeng類的成員變量:定義一些變量代碼如下所示:private MyListener my = new MyListener();   private Timer timer;   private int score=0;//總分   private int jindu=0;    private
  • 韓國最會化妝的妹紙樸惠敏 手把手教你打造"派對女王"妝
    韓國最會化妝的妹紙——樸惠敏 (Pony) ,手把手教你打造這款十足「女王範」的大氣場妝容,一起來學學吧!樸惠敏 (Pony) 手把手教你化彩妝眼妝:步驟一:樸惠敏 (Pony) 手把手教你化彩妝步驟七:用眼線膏畫出眼尾上揚的眼線。
  • 手把手教你零基礎成為小紅書博主賺錢
    而我也是在疫情期間接觸到自媒體,但自媒體平臺很多,在綜合各方面後,我先選擇了小紅書,原因是:小紅書的創作不需要花費太多時間,篇幅短小,只要利用碎片時間就可以完成一篇筆記。特別幸運的是,我遇到小紅書博主玄女,是她手把手教我從零基礎小白,成為小紅書博主。
  • 《燃燒我的灰姑娘》玩法詳解 手把手教你推動燃燒我的灰姑娘故事
    《燃燒我的灰姑娘》玩法詳解 手把手教你推動燃燒我的灰姑娘故事時間:2019-06-10 13:45   來源:牛遊戲網   責任編輯:沫朵 川北在線核心提示:原標題:《燃燒我的灰姑娘》玩法詳解 手把手教你推動燃燒我的灰姑娘故事 燃燒我的灰姑娘怎麼玩?《燃燒你的灰姑娘》是一款以童話故事灰姑娘為背景的放置類遊戲。
  • 用情景填空訓練好詞好句,手把手教你寫出高分作文
    沒遇上高級語文老師給你寫作指導?沒關係,作為一名傑出的作家,她積累了多年的寫作經驗和技巧都是寶。現在,將她的作品《手把手教你看圖寫話》和大家見面啦!趕快拋開那些沉悶的書本,一起來看看吧!這裡有詳盡易懂的寫作技巧,一定會讓你愛上寫作。寫作技巧太多、太難?不用怕!讓手把手作文來幫你,教你掌握高分作文的秘訣。
  • 用他人的錯誤為你的創作鋪路,手把手教你避開200種創作誤區
    如果你喜歡寫小說,要提高寫作水平,你會選擇看什麼樣的書?《我的職業是小說家》《30天寫小說》《小說創作基本技巧》《小說的藝術》《小說的骨架》《暢銷作家寫作全技巧》《折磨讀者的秘密》《偷故事的人》《超棒小說這樣寫》《情節與人物》《大笑說家如何唬了你?》
  • 手把手教你用 KODI tMM 打造家庭觀影系統
    期間也利用 docker 安裝了 Jellyfin 打造影音伺服器的部分,不過在電視上使用 Jellyfin 的體驗還是不太理想,Jellyfin 自帶的刮削效果也不是特別滿意。這次就分享下自己用 KODI+ tMM(tinyMediaManager),為了方便我用電腦版的 KODI 進行截圖/演示,實際電視/盒子/平板等設備與 Win 版本差別不大,不過需要注意的是由於國內很多智能電視系統是基於老版本 Android 開發的,新版本 Kodi 可能存在不兼容現象,大家可以嘗試換用老版本 KODI 來解決這個問題。
  • 日本主婦的「收納秘籍」:手把手教你,如何打造整潔家居
    在日常的生活之中,離不開正確掌握收納的技巧,從而把生活打造得更加有品質。打開今天的文章分享,跟著日本主婦的「收納秘籍」,手把手教你,如何有品質地打造整潔家居。一,想要避免房屋雜亂,學會用收納盒放置小物品。對於日本主婦而言,這些看起來不起眼的物品收納盒,只要能夠挑選出適合的尺寸,和空間相互匹配,使用起來,也會大大提升功效,營造品質家居。
  • 手把手教你唱西城男孩金曲
    Hi, 大家周末好!我是 Jonathan,你還記得我的「手把手教你唱英文歌」嗎?原來一不小心就教了5首啦,不知道大家都會唱了嗎?點擊 👇  回顧經典教程手把手教你唱「Someone Like You」手把手教你唱「You Raise Me Up」手把手教你唱「Right Here Waiting」
  • 《神武4》手遊娃娃機玩法教學 手把手教你怎麼抓娃娃
    :原標題:《神武4》手遊娃娃機玩法教學 手把手教你怎麼抓娃娃 神武4手遊怎麼抓娃娃?作為一款社交休閒類的遊戲,還是很吸引妹子們玩的。所以遊戲中也加入了一些休閒趣味元素,比如抓娃娃。:《神武4》手遊娃娃機玩法教學 手把手教你怎麼抓娃娃 神武4手遊怎麼抓娃娃?
  • 【手把手教你玩VR-第五節】全景拍攝器材種類
    《手把手教你玩VR》系列,每周二、四發布,彌補網絡上缺乏系統VR教程的缺憾。 Nokia OZO是Nokia Technologies打造的一款先進的虛擬實境攝影報備。它能夠通過 8 個同步球形相機拍攝立體3D視頻,以及8個集成麥克風錄製立體音頻。
  • 手把手教你,簡單又好學
    我這才恍然大悟,敢情這好吃的牛軋餅,還是別人的獨家秘方呀?在烘焙幫學堂就可以得到正宗的熬糖版牛軋餅做法,阿濤將教授一款鹹蛋黃牛軋餅和一款蔓越莓牛軋餅,還會手把手教你調整配方,做出屬於自己的百變牛軋餅。這可是私房獨家密方哦,跟我一起做起來吧!長按識別二維碼或點文末閱讀原文即可報名
  • 手把手教你系一個好看實用的蝴蝶結
    圖解--手把手教你系一個好看實用的蝴蝶結。請看圖!這是一個很多女生都會有一款基本小絲巾,我的這款是雪紡的。大部分情況下,我們會像下圖一樣繫到脖子裡用來防寒或是裝飾。今天要教大家把它打成這樣的結(蝴蝶結),其實像這樣子還可以在後面別髮夾,佩戴於頭頂當頭花用,或是別在純色衣服上當胸花都可以。下面主要來說說佩戴在脖子下方,如何打成一個好看的蝴蝶結。首先,將絲巾系在脖子上打一個結,調整兩頭一長一短更好看。這款絲巾比較寬,我將它折了三折。
  • 手把手教你打造一個花園陽臺
    來源:設易網有個陽臺的你,如果還只是想:衣服晾在這兒能幹得更快,那你的生活也太單調了。陽臺於你怎可能只是一個晾衣空間?難道你的心中沒有一個秘密花園的小夢想?今天小編就帶著你,在這個夏天花開更濃之前,把你的陽臺變成一個小花園。
  • 手把手教你6種吊瓶繩子打結方法,簡單非常實用,學會受用
    手把手教你6種吊瓶繩子打結方法,簡單非常實用,學會受用 2020-09-03 15
  • 手把手教你開口戒指纏紅繩,步驟詳細,方法簡單,比店裡綁的更好
    手把手教你開口戒指纏紅繩,步驟詳細,方法簡單,比店裡綁的更好萌萌噠的小編上線了,各位網友們趕緊圍觀起來,又是美好的一天,也許此刻的你已經被小編的文章所吸引,那麼就讓小編帶你一起開啟美妙的閱讀之旅吧,要知道,小編最愛的人可是你喲!
  • 6個步驟打造完美正手,手把手教你正確的打網球!
    6個步驟打造完美正手,手把手教你正確的打網球!
  • 手把手教你用手機製作3D全息投影儀
    如此簡單低成本的小妙招簡直就是把妹神技YouTube上出現一則非常火爆的視頻,一位名為「Mrwhosetheboss」的美國哥們兒親自動手,用剪刀、紙片和透明的塑料板以及手機進行搭配,居然創造出了全息3D投影的效果。很多朋友表示在看完這個視頻之後都被驚呆了,還是那句話,歪果仁是真會玩啊!
  • 天太冷了,手把手教你做燉菜,簡單又好吃,熱騰騰地特別下飯!
    天太冷了,手把手教你做燉菜,簡單又好吃,熱騰騰地特別下飯!小夥伴們好,我是零落,唯有美食與愛不可辜負!因為天氣冷,吃燉菜燒菜,不僅有營養,還特別下飯,而且還能驅寒保暖哦,一頓飯下來,腸胃暖和了,手腳也不冰涼了。今天這道【土豆燒雞】就是一道特別好吃的燒菜(也叫燉菜),手把手教你做,簡單又好吃,熱氣騰騰的,噴香軟糯。既能補充營養,還能提高免疫力,比外賣健康多了。