日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
手把手教你用Java打造一款簡單故事書之二

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

創(chuàng)新互聯(lián)公司專注于東風網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供東風營銷型網(wǎng)站建設,東風網(wǎng)站制作、東風網(wǎng)頁設計、東風網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務,打造東風網(wǎng)絡公司原創(chuàng)品牌,更為您提供東風網(wǎng)站排名全網(wǎng)營銷落地服務。

一、項目背景

隨著移動互聯(lián)網(wǎng)的發(fā)展,電子版的書成為現(xiàn)在主流,針對用戶的需求,有的放矢地呈現(xiàn)給用戶,閱讀電子版書,提高他們的學習效率。

二、項目目標

1.實現(xiàn)美觀的界面。

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

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

三、項目實施

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

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

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

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

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

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

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

效果圖如下圖所示:

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

1.頁面切換按鈕功能的實現(xiàn):

 
 
 
 
  1. class MyListener implements ActionListener{
  2. @Override
  3. public void actionPerformed(ActionEvent e) {
  4. // TODO Auto-generated method stub
  5. //此處添加事件處理的代碼
  6. if(e.getSource()==btn_last){//上一頁
  7.         if(papeNum>1){//不是第一頁
  8.             papeNum--;
  9.             btn_last.setEnabled(true);
  10.             btn_next.setEnabled(true);
  11.         }
  12.         if(papeNum==1){
  13.             btn_last.setEnabled(false);
  14.             btn_next.setEnabled(true);
  15.         }
  16. }
  17. if(e.getSource()==btn_next){//下一頁
  18.         if(papeNum
  19.             papeNum++;
  20.             btn_last.setEnabled(true);
  21.             btn_next.setEnabled(true);
  22.         }
  23.         if(papeNum==str.length){
  24.             btn_last.setEnabled(true);
  25.             btn_next.setEnabled(false);
  26.         }
  27. }
  28.    text01.setText(str[papeNum-1]);

2.字號、字體、字形功能的實現(xiàn):

 
 
 
 
  1. if(e.getSource()==twelf)//字號12
  2.    size=12;
  3.    if(e.getSource()==fiveteen)//字號15
  4.    size=15;
  5.    if(e.getSource()==eighteen)//字號18
  6.    size=18;
  7.    if(e.getSource()==twenty)//字號20
  8.    size=20;
  9.    if(e.getSource()==song)//字體宋體
  10.    style="宋體";
  11.    if(e.getSource()==hei)//字體黑體
  12.    style="黑體";
  13.    if(e.getSource()==kai)//字體楷體
  14.    style="楷體";
  15.    if(e.getSource()==chang)//字形常規(guī)
  16.    pattern=Font.PLAIN;
  17.    if(e.getSource()==jia)//字形加粗
  18.    pattern=Font.BOLD;
  19.    if(e.getSource()==qing)//字形傾斜
  20.    pattern=Font.ITALIC;
  21.    text01.setFont(new Font(style,pattern,size));

3.顏色、換壁紙功能的實現(xiàn):

 
 
 
 
  1. if(e.getSource()==red)//顏色紅色
  2.    text01.setForeground(Color.red);
  3.    if(e.getSource()==green)//顏色綠色
  4.    text01.setForeground(Color.green);
  5.    if(e.getSource()==blue)//顏色藍色
  6.    text01.setForeground(Color.blue);
  7.   
  8.    if(e.getSource()==swap){//換壁紙
  9. photoNum++;
  10. if(photoNum>=6)
  11.         photoNum=1;
  12. label.setIcon(new ImageIcon("photo//photo"+photoNum+".jpg"));
  13. }

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

(1)讀取Txt文件:在main主程序?qū)懸韵麓a:

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

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

 
 
 
 
  1. public String readFile(InputStream inStream){//讀取文件中的內(nèi)容
  2.  byte[] buffer =new byte[2048];
  3.  int hasRead=0;//已經(jīng)讀取的字節(jié)數(shù)
  4.  StringBuffer sBuffer=new StringBuffer();
  5.  try{
  6.  while( (hasRead = inStream.read(buffer))!=-1){//還沒有讀完
  7.          sBuffer.append(new String(buffer,0,hasRead,"GBK"));
  8.  }
  9.  inStream.close();
  10.  }catch(Exception e){
  11.  e.printStackTrace();
  12.  }
  13. return sBuffer.toString();
  14.     }     
  15. }

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

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

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

四、總結(jié)

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

2.事件處理函數(shù)的添加,難點是運用理解構(gòu)造函數(shù)、內(nèi)部類的創(chuàng)建。

3.代碼很簡單,希望能幫到你。

本文轉(zhuǎn)載自微信公眾號「Java進階學習交流」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Java進階學習交流公眾號。


標題名稱:手把手教你用Java打造一款簡單故事書之二
URL分享:http://www.dlmjj.cn/article/dpsjpjd.html