Java布局管理器在现实工程中的应用
2008-01-05 08:22:11 来源:WEB开发网核心提示:内容简介:java的出现是编程艺术和计算环境改变的结果,是Intenet发展的产物同时也是推动Internet发展的动力,Java布局管理器在现实工程中的应用,但是Java作为新的编程语言,有许多不与以往编程语言不同的地方,因为在BorderLayout中,假如使用BorderLayout.CENTER的方式则达到这种
内容简介:java的出现是编程艺术和计算环境改变的结果,是Intenet发展的产物同时也是推动Internet发展的动力。但是Java作为新的编程语言,有许多不与以往编程语言不同的地方。 布局治理就是其中的一个,本文的目的在于介绍如何将布局治理应用于现实工程中,而不是作为学习布局治理的参考资料。
布局治理对于众多编程人员来说是一个比较新的概念,因为以前使用的多种编程工具已经很好地解决了这个问题,根本就不用程序员自己考虑控件的布局问题,只需要简单的拖拽就可。但是接触到java之后,尤其是因为使用elipse等工具,就不得不认真地对待这个布局问题。而且我个人认为使用elipse这种工具开发也有它的优点,优点之一就是就是可以使开发者真正的在开发过程中思考每一个类的结构,可以使代码更加的优秀,同时也使一个程序员更轻易向一个程序设计人员转变。
由于本文的目的在于介绍布局治理在现实工程中的应用,关于布局治理的基本内容,这里不再介绍,并把读者定位于已经基本了解布局治理的使用方法的程序员,没有把握布局治理基础知识的读者可以参考sun提供的java api。
开始接触布局治理的程序员可能会感觉布局治理比较难于对付,增加了开发人员对商业逻辑考虑之外的负担,这个的确是事实,但是远不如刚接触不觉布局治理的人想象得那么难。因为从工程角度考虑的话,一个用户界面的并非十分的复杂,当然我是指的一般的数据库应用程序,界面极其复杂的工具类软件。一般来说数据库应用程序的主要应用在于对数据库的维护,回想我们以前从事过的工程,用户界面基本上由菜单,数据列表,数据编辑组件,一组用来提交用户工作的按钮组成。以下内容就以上述组件作为一个数据库应用程序的用户界面为基础展开讨论。
首先我们把这些窗体内容分组,然后把每一组组件放在一个容器中(这是我以往的开发过程中处理用户界面的方法,个人认为可以简化用户界面的开发),这样我们就把以上组件划分为两组(菜单不再布局考虑之内)即数据组件和按钮,然后我们在把数据组件分成数据列表,数据编辑组件分成两组,将以上个组分别放置在各自的容器中,使用程序表达出如下:
JFrame sampleFrame = new JFrame("Sample Frame for Manager Layout");
JPanel panelDataContent = new JPanel(); // 数据组件容器
JPanel panelDataList = new JPanel(); // 数据列表容器
JList listData = new JList();
/*
注释1 这里应该是使用布局治理把listData放在panelDataList上
*/
JPanel panelDataEditor = new JPanel(); // 数据编辑组件容器
JTextField editData1 = new JTextField();
//...... // some other edit controls
/*
注释2 这里应该是使用布局治理把数据编辑组件放在panelDataEditor上
*/
/*
注释3 这里应该是使用布局治理器把panelDataList和panelDataEditor放在
panelDataContent上
*/
JPanel panelButton = new JPanel(); // 按钮容器
JButton buttonModify = new JButton("Modify");
//...... //some other buttons
/*
注释4 这里应该是使用布局治理器把按钮放在panelButton上
*/
Container c = sampleFrame.getContentPane();
/*
注释5 这里应该是使用布局治理器把panelButton和panelDataContent放在c上
*/
这样的话,我们在开始考虑布局的时候就可以考虑把一个窗体分为两部分。这样我们就有两种结构可以选择,上下结构和左右结构。下面我们来先考虑上下结构。
以我个人的审美观点和便利性角度的考虑,我会选择把panelButton放在下面,同时我们应该考虑到panelDataContent应该占据除了panelButton之外所有sampleFrame空间,就像是在使用Delphi是我们将一个TPanel的实例的align设置成alClient。这样BorderLayout就成为c的布局治理器。因为在BorderLayout中,假如使用BorderLayout.
CENTER的方式则达到这种目的。那么panelButton则应该使用BorderLayout.SOURTH的方式布局。于是产生了一下代码
更多精彩
赞助商链接