点击上方“
Java进阶学习交流
”,进行关注
后台回复“Java”即可获赠Java学习资料
今
日
鸡
汤
西当太白有鸟道,可以横绝峨眉巅。
上篇文章,我们介绍了故事书的理论内容,这篇文章,我们一起来看具体的代码实现。,具体教程如下。
一、项目背景
随着移动互联网的发展,电子版的书成为现在主流,针对用户的需求,有的放矢地呈现给用户,阅读电子版书,提高他们的学习效率。
二、项目目标
1.实现美观的界面。
2.能够基本实现改变字号、字体、字形、颜色、壁纸等选择,按钮页面切换功能。
3.java读取txt文件,简化代码。
三、项目实施
首先回顾上一节的手把手教你用Java打造一款简单故事书(上篇),完成界面的窗口、菜单栏、上下页的按钮,效果如下图所示。
接下来,小编带大家完成剩下的功能,具体的实现步骤如下。
(一)显示背景图,完成界面设计
1.setOpaque设置控件是否透明的,true表示不透明,false表示透明;
text01.setOpaque(false);panel01.setOpaque(false);label.setBounds(0,IconWidth(),bg.getIconHeight());//设置边界imagePanel=(ContentPane();//获取窗体的内容面板imagePanel.setOpaque(false);//设置透明LayeredPane().add(label,new Integer(Integer.MIN_VALUE));
2.把背景图添加到分层窗格的最底层;
label.setBounds(0,IconWidth(),bg.getIconHeight());//设置边界imagePanel=(ContentPane();//获取窗体的内容面板imagePanel.setOpaque(false);//设置透明LayeredPane().add(label,new Integer(Integer.MIN_VALUE));
效果图如下图所示:
(二)添加事件监听器MyListener(自己命名)
1.页面切换按钮功能的实现:
class MyListener implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e){// TODO Auto-generated method stub//此处添加事件处理的代码Source()==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);}}Source()==btn_next){//下一页if(papeNum
2.字号、字体、字形功能的实现:
Source()==twelf)//字号12size=12;Source()==fiveteen)//字号15size=15;Source()==eighteen)//字号18size=18;Source()==twenty)//字号20size=20;Source()==song)//字体宋体style="宋体";Source()==hei)//字体黑体style="黑体";Source()==kai)//字体楷体style="楷体";Source()==chang)//字形常规pattern=Font.PLAIN;Source()==jia)//字形加粗pattern=Font.BOLD;Source()==qing)//字形倾斜pattern=Font.ITALIC;text01.setFont(new Font(style,pattern,size));
3.颜色、换壁纸功能的实现:
Source()==red)//颜色红色text01.d);Source()==green)//颜色绿色text01.);Source()==blue)//颜色蓝色text01.setForeground(Color.blue);Source()==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//");FileInputStream inStream1= new FileInputStream("story//");FileInputStream inStream2= new FileInputStream("story//");str[0]= s.readFile(inStream0);str[1]adFile(inStream1);str[2]adFile(inStream2);text01.setText(str[0]);
(2)读取文件中内容的方法:
public String readFile(InputStream inStream){//读取文件中的内容byte[] buffer =new byte[2048];int hasRead=0;//已经读取的字节数StringBuffer sBuffer=new StringBuffer();try{while( (hasRead = ad(buffer))!=-1){//还没有读完sBuffer.append(new String(buffer,0,hasRead,"GBK"));}inStream.close();}catch(Exception e){e.printStackTrace();}String();}}
5.标签本来是一种最简单的组件,为什么可以将它设置成为一个窗体的背景呢?
答案:(1)首先还是要了解框架JFrame中的层次结构。JFrame中的层次分布及相对关系是:最底层是JRootPane,第二层是JlayerPane,最上层就是ContentPane,也正是我们常说的内容面板。
(2)所以一般我们拖放的控件就是在ContentPane层上。也就是说我们只需将背景图片放在JFrame的第二层是JlayerPane上,再把内容面板ContentPane设置为透明,则第二层JlayerPane上放置的图片即成为内容面板的背景了。
四、总结
1.本文主要介绍了JPanel、JButton、JLabel、JTextArea、JMenu、JMenuItem等组件的基本使用,以及相应的事件处理。
2.事件处理函数的添加,难点是运用理解构造函数、内部类的创建。
3.代码很简单,希望能帮到你。如果有需要本文项目代码的小伙伴,可以在后台回复“故事书”三个字进行获取。
------------------- End -------------------
往期精彩文章推荐:
欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
本文发布于:2024-02-01 18:19:23,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170678276538557.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |