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分钟,我就会下意识的要运行或测试一下。如果写了半个小时还不能进行测试,我会下意识的考虑重新组织程序,以便能够尽快的运行一下、测试一下。
这只是我的编码习惯,我在做设计和写文章时,只要精神集中,还是可以长时间投入的哦。
相关: