第一次写学习笔记,首先发几句牢骚:之前写软工作业,用C++感觉太坑了,加上之前有android
的一点点java基础,于是DB大作业果断选择了使用java。周末苦逼了两天,把之前几乎没怎么动
的作业赶到几乎完成。昨晚长嘘一口气,对自己说把这个页面加个滚动条就去睡觉。然后就从9点
多搞到12点还是失败的。当时一拳打爆显示屏的心都有啊,T_T。然后今天早上10点多总算成功了。
第一次写swing的稍微大点的APP,书本是推荐用一个Jframe和多个JPanel来组织代码的,于是我
需要加滚动条的那个页面本来也是JPanel。
尝试1:试图在Jpanel里面添加个JScrollPane,再继续弄。
结果1:怎么都显示不出来。
想法:JScrollPane最好还是不要放Jpanel里面。
于是我把该页面改成JScrollPane,JScrollPane的用法和JPanel不完全一样。推荐用法是在里面
放一个JPanel,再往JPanel里面添加控件。 添加完后,还要以下两句。
panelForScroll.setPreferredSize(new Dimension(1000,2000));
this.getViewport().add(panelForScroll);
第一句是设定JPanel的大小,如果不设定好像会出一些奇奇怪怪的问题,因为JPanel没有设定
大小的话没法被滚动条识别。第二句是在JScrollPane里面的Viewport里面添加JPanel。而且千
万记得JScrollPane本身不要setLayout(null),可能导致不显示。
做完如上一大堆改动后,我的页面依然什么东西都没有。我当时着急了,自己写了个很小的
JScrollPane类,只放了个Jpanel,上面一个按钮。这个小类可以正常显示。找BUG找了很久
无果,我做了另一种尝试,即把大类(从JPanel改成JScrollPane的那个类)的所有内容复制
出来,放到一个新的类里面,然后新的类可以显示。
本来是public class JS extends JPanel,被我改成public class JS extends JScrollPane,这个
JS类死活不能用,我新建了个类public class JS2 extends JScrollPane,其他内容都从JS那
边复制过来,然后JS2可以用。于是我的结论是不要轻易改变extends后面的东西,
可能会导致IDE处理出问题。(我用的是eclipse)
然后由于JS2可以显示,也有滚动条后,我以为接近成功了。后来发现另外一些很二的问题。
有时候我们会动态改变JScrollPane的内容,改完什么东西都显示不出来。我的解决方案是:
Jframe.removeAll();
然后依次一个个页面add回来,最后把当前的JScrollPane也add回来,就可以显示了。记住
一定要是最后一个 add JScrollPane。如果还不显示,再加上一句Jframe.validate(),再不行
我也没办法了。
好了,就写这些吧。今天终于把它交上去了,然后开始苦逼的暑假大作业之旅。以后也要多
多写学习笔记吧,呵呵。
顺便吐槽一下这排版真是太蛋疼了。。。