Swing GUI 案例 - 4. 用最快的速度建立原型
在编写GUI程序时,根据设计意图,最快地实现一个原型,并在原型上逐项改进,是我摸索的一个有效方法。
应用简述:实现如下界面,并提供相关的录入、查询、修改和删除等功能。
为上述构思建立原型,最少需要多少行程序呢?
分析一下,这个界面的核心应当是三个滚动面板(JScrollPane),一个容纳任务列表(左侧),一个容纳记录列表(右侧),一个容纳文本信息(右下)。
其他的相对简单。
任务摘要:
1、创建三个滚动面板(JScrollPane)
2、创建右边的分割面板(JSplitPane)
3、创建整体的分割面板
4、设定主要部件的大小,以及分割条的位置
5、创建窗口(JFrame)
6、显示窗口
这样的话,也许下列30行代码可以解决问题:
import java.awt.*; import javax.swing.*; public class taskman1 { public static void main (String[] args) { JScrollPane s_index = new JScrollPane(new JTextArea()) , s_recs = new JScrollPane(new JTextArea()) , s_info = new JScrollPane(new JTextArea()) ; JSplitPane right = new JSplitPane (JSplitPane.VERTICAL_SPLIT,s_recs,s_info) , split = new JSplitPane (JSplitPane.HORIZONTAL_SPLIT,s_index,right); split.setPreferredSize(new Dimension(600,400)) ; right.setDividerLocation(300) ; split.setDividerLocation(300) ; JFrame f = new JFrame("任务人III") ; f.setContentPane(split) ; f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ; f.pack() ; f.setVisible(true) ; } }
编译运行,效果如下:
看起来有点意思了,不过还有两点缺陷:
1、窗口风格有差异;
2、程序尚不能算是线程安全(参见最简单的swing程序)
改进一下,程序达到45行:
import java.awt.*; import javax.swing.*; public class taskman2 { public static void main(String[] args) throws Exception { String lnf = UIManager .getCrossPlatformLookAndFeelClassName() ; UIManager.setLookAndFeel(lnf) ; JFrame.setDefaultLookAndFeelDecorated(true) ; JDialog.setDefaultLookAndFeelDecorated(true) ; SwingUtilities.invokeLater(new Runnable(){ public void run() { make_ui() ; } }) ; } private static void make_ui () { JScrollPane s_index = new JScrollPane(new JTextArea()) , s_recs = new JScrollPane(new JTextArea()) , s_info = new JScrollPane(new JTextArea()) ; JSplitPane right = new JSplitPane (JSplitPane.VERTICAL_SPLIT,s_recs,s_info) , split = new JSplitPane (JSplitPane.HORIZONTAL_SPLIT,s_index,right); split.setPreferredSize(new Dimension(600,400)) ; right.setDividerLocation(300) ; split.setDividerLocation(300) ; JFrame f = new JFrame("任务人III") ; f.setContentPane(split) ; f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ; f.pack() ; f.setVisible(true) ; } }
对,这是我的程序风格,我希望我的代码在小屏幕中也不需要左右滚动,也就是说,每一行的字符数都会限制在(比如说)60以内。
可是java的有些类和方法的名字实在是太长了,但我还是想控制,这样,就多了一些语句的折行,例如:
String lnf = UIManager .getCrossPlatformLookAndFeelClassName() ;
这个程序在eclipse中显示时,即使是小窗口,也不需要横向滚动(没有横向的滚动条):
这次的运行效果:
图形界面程序,有图,感觉上就可以借鉴绘图、绘画方面的理论。
在绘画中,也许这可以称为构图,忽略细节,寻求整体的感觉结构。
类比作文,这叫列提纲;
现在是写程序,这被称为“原型”。
从学生时代一直到今天,我写程序一直是缺乏耐性,不论多大的程序,如果我在程序编辑器里工作了15分钟,我就会下意识的要运行或测试一下。如果写了半个小时还不能进行测试,我会下意识的考虑重新组织程序,以便能够尽快的运行一下、测试一下。
这只是我的编码习惯,我在做设计和写文章时,只要精神集中,还是可以长时间投入的哦。
相关: