Java布局管理器在现实工程中的应用

内容简介: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的方式布局。于是产生了一下代码

c.setLayout(new BorderLayout());//这一句可以省略,因为frame的默认布局是
Borderlayout。
c.add(panelDataContent,BorderLayout.CENTER);
c.add(panelButton,BorderLayout.SOUTH);

我们只需把以上的代码代替注释5,就实现了第一次分组的布局。接着我们是用同样的布局管理来实现第二次分组,也就是数据组件的分组。

panelDataContent.setLayout(new BorderLayout());//不可省略,JPanel的默认布局是
FlawLayout。
panelDataContent.add(panelDataList,BorderLayout.CENTER);
panelDataContent.add(panelDataEditor,BorderLayout.SOUTH);

将以上代码代替注释3的位置即可。

时间: 2024-12-31 06:05:12

Java布局管理器在现实工程中的应用的相关文章

Java布局管理器的相关问题

问题描述 Java布局管理器的相关问题 在Java中,容器ScrollPane的默认布局管理器是BorderLayout 但是可以改变ScrollPane的布局管理器吗? 我的一个程序如下: import java.awt.Component; import java.awt.Container; import java.awt.Window; import java.awt.ScrollPane; import java.awt.TextComponent; import java.awt.T

Java布局管理器深入讨论

Java布局管理器深入讨论5/23/2001 16:59:54· 刘之佑·yesky-------------------------------------------------------------------------------- 我们都知道,java的GUI界面定义是由awt类和swing类来完成的.它在布局管理上面采用了容器和布局管理分离的方案.也就是说,容器只管将其他小件放入其中,而不管这些小件是如何放置的.对于布局的管理交给专门的布局管理器类(LayoutManager)来

离开Java布局管理器

Java语言中提供的布局管理器种类有:边界式布局.卡片式布局.流式布局和网格式布局等,各有不同的特点,可根据实际需要选用:但有最大自由设计空间的是"无布局管理器"--即不使用任何布局格式,而通过手工方式添加组件到页面布局的绝对位置上.本例中使用的便是"无布局管理器". 在使用"无布局管理器"时,首先要作出声明,即: setLayout(null); 然后用reshape()方法指定组件的具体位置和尺寸, 基本语句如下所示: Label label

Java布局管理器的具体实现

我们都知道,java的GUI界面定义是由awt类和swing类来完成的.它在布局管 理上面采用了容器和布局管理分离的方案.也就是说,容器只管将其他小件放入 其中,而不管这些小件是如何放置的.对于布局的管理交给专门的布局管理器类 (LayoutManager)来完成. 其实,java在GUI方面应该是并不成功的.Awt类和swing类的结构非常复杂, 加上充斥其间的子类继承和接口实现,使得要想掌握这两个类非常困难.这也是 很多的java程序员抱怨的事情,但GUI已经成了程序发展的方向,所以这里我们

Java布局管理器使用方法探讨

很多初学者在用Java布局器自动布局画界面时,经常遇见不知道如何定义区域大小或按钮之间的距离等问题.我写过一篇<实现JAVA手动布局中各个组件能随窗口变化的方法>的文章,有读者反映算坐标不好算,问能不能用布局器实现文章中的界面.其实自动布局也可以解决定义区域大小或按钮之间的距离等问题,只是没有手动布局那么灵活.下面我就举一个例子. 首先,建一个frame文件(Application应用程序),在Design中将this中的layout设置为BorderLayout. 第二,在组件盘内点选Swi

Java布局管理器使用方法_JSP编程

很多初学者在用Java布局器自动布局画界面时,经常遇见不知道如何定义区域大小或按钮之间的距离等问题.我写过一篇<实现JAVA手动布局中各个组件能随窗口变化的方法>的文章,有读者反映算坐标不好算,问能不能用布局器实现文章中的界面.其实自动布局也可以解决定义区域大小或按钮之间的距离等问题,只是没有手动布局那么灵活.下面我就举一个例子. 首先,建一个frame文件(Application应用程序),在Design中将this中的layout设置为BorderLayout. 第二,在组件盘内点选Swi

Java布局管理器使用方法

很多初学者在用Java布局器自动布局画界面时,经常遇见不知道如何定义区域大小或按钮之间的距离等问题.我写过一篇<实现JAVA手动布局中各个组件能随窗口变化的方法>的文章,有读者反映算坐标不好算,问能不能用布局器实现文章中的界面.其实自动布局也可以解决定义区域大小或按钮之间的距离等问题,只是没有手动布局那么灵活.下面我就举一个例子. 首先,建一个frame文件(Application应用程序),在Design中将this中的layout设置为BorderLayout. 第二,在组件盘内点选Swi

AndroidUI设计之 布局管理器 - 详细解析布局实现

写完博客的总结 : 以前没有弄清楚的概念清晰化 父容器与本容器属性 : android_layout...属性是本容器的属性, 定义在这个布局管理器的LayoutParams内部类中, 每个布局管理器都有一个LayoutParams内部类, android:... 是父容器用来控制子组件的属性. 如android:layout_gravity 是控制组件本身的对齐方式, android:gravity是控制本容器子组件的对齐方式; . 作者 :万境绝尘  转载请注明出处 : http://blo

Qt之自定义布局管理器(QCardLayout)

简述 手动布局另一种方法是通过继承QLayout类编写自己的布局管理器. 下面我们详细来举一个例子-QCardLayout.它由同名的Java布局管理器启发而来.也被称之为卡片布局,每个项目偏移QLayout::spacing(). 简述 定义 实现 效果 源码 定义 编写自己的布局,必须定义如下: 一种存储布局处理项目的数据结构,每个项目都是一个QLayoutItem,本例使用QList. addItem() 如何添加项目布局. setGeometry() 如何控制布局. sizeHint()