没有合适的资源?快使用搜索试试~ 我知道了~
Java图形用户界面设计
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 3 下载量 151 浏览量
2021-03-02
11:08:30
上传
评论 1
收藏 230KB PDF 举报
温馨提示
我发现界面设计是创造游戏最困难的阶段之一。如今市面上充斥着各种不同的屏幕,而在这些较小的屏幕空间里,设计师更是需要谨慎思考每个屏幕的像素问题。随着Internet的飞速发展,Java技术也得到了越来越广泛的应用。而无论我们是采用J2SE、J2EE还是J2ME,GUI都是不能回避的问题。现在的应用软件越来越要求界面友好、功能强大而又使用简单。而众所周知,在Java中进行GUI设计相对于其跨平台、多线程等特性的实现要复杂和麻烦许多。这也是很多Java程序员抱怨的事情。但GUI已经成为程序发展的方向,所以我们也必须了解Java的GUI设计方法和特点。其实,采用Java提供的布局管理器接口和相应的布局
资源推荐
资源详情
资源评论
Java图形用户界面设计图形用户界面设计
我发现界面设计是创造游戏最困难的阶段之一。如今市面上充斥着各种不同的屏幕,而在这些较小的屏幕空间里,设
计师更是需要谨慎思考每个屏幕的像素问题。
前言
随着 Internet 的飞速发展,Java 技术也得到了越来越广泛的应用。而无论我们是采用 J2SE、J2EE 还是 J2ME,GUI
都是不能回避的问题。现在的应用软件越来越要求界面友好、功能强大而又使用简单。而众所周知,在 Java 中进行
GUI 设计相对于其跨平台、多线程等特性的实现要复杂和麻烦许多。这也是很多 Java 程序员抱怨的事情。但 GUI 已
经成为程序发展的方向,所以我们也必须了解 Java 的 GUI 设计方法和特点。其实,采用 Java 提供的布局管理器接口
和相应的布局管理类,我们也可以做出相当漂亮的界面来,当然实现起来肯定要比 VB 麻烦许多。本文试图通过自己
的开发经历介绍一些具体的应用实例,希望能给那些曾经象我一样苦闷的 Java 痴迷者一些帮助。
Java 中的布局管理器
2.1 为什么要使用布局
在实际编程中,我们每设计一个窗体,都要往其中添加若干组件。为了管理好这些组件的布局,我们就需要使用布局
管理器。比如说,设计一个简单的计算器,或一个文本编辑器等等。这些组件是让 JVM 自己任意安排呢?还是按照一
定的位置关系进行规范的安排呢?当然应该选择后者。将加入到容器的组件按照一定的顺序和规则放置,使之看起来
更美观,这就是布局。在 Java 中,布局由布局管理器 (LayoutManager) 来管理。那么,我们在什么时候应该使用布局
管理器?应选择哪种布局管理器?又该怎样使用布局管理器呢?
如果你写的是 GUI 程序,在使用 AWT/Swing 组件时就不应硬性设置组件的大小和位置,而应该使用 Java 的布局管理
器(LayoutManager)来设置和管理可视组件的大小和位置,否则就有可能造成布局混乱。不信,你可以新建一个
Frame(或 JFrame),通过 setBounds() 方法往其中添加几个 Button(或 JButton),一旦你将窗体拉大或缩小时,
你会发现组件的排列完全不是按你所预想的那样。为了解决这个问题,即当窗体(或容器)缩放时,组件位置也随之
合理调整,我们就需要使用布局管理器。
为此,我们首先要知道 Java 的布局方式,Java 提供的 API 中有些什么布局管理器,它们的布局特点是什么。
2.2 Java 的布局方式
我们都知道,Java 的 GUI 界面定义是由 AWT 类包和 Swing 类包来完成的。它在布局管理上采用了容器和布局管理分
离的方案。也就是说,容器只管将其他组件放入其中,而不管这些组件是如何放置的。对于布局的管理交给专门的布
局管理器类(LayoutManager)来完成。
现在我们来看 Java 中布局管理器的具体实现。我们前面说过,Java 中的容器类(Container),它们只管加入组件
(Component),也就是说,它只使用自己的 add() 方法向自己内部加入组件。同时他记录这些加入其内部的组件的
个数,可以通过 container.getComponentCount() 方法类获得组件的数目,通过 container.getComponent(i) 来获得相
应组件的句柄。然后 LayoutManager 类就可以通过这些信息来实际布局其中的组件了。
Java 已经为我们提供了几个常用的布局管理器类,例如: FlowLayout、BorderLayout、GridLayout、GridBagLayout
等。下面列表说明它们的布局特点:
包 类 特点
java.awt CardLayout 将组件象卡片一样放置在容器中,在某一时刻只有一个组件可见
java.awt FlowLayout
将组件按从左到右而后从上到下的顺序依次排列,一行不能放完则
折到下一行继续放置
java.awt GridLayout 形似一个无框线的表格,每个单元格中放一个组件
java.awt BorderLayout
将组件按东、南、西、北、中五个区域放置,每个方向最多只能放
置一个组件
java.awt GridBagLayout 非常灵活,可指定组件放置的具体位置及占用单元格数目
Javax.swing BoxLayout 就像整齐放置的一行或者一列盒子,每个盒子中一个组件
Javax.swing SpringLayout 根据一组约束条件放置子组件
Javax.swing ScrollPaneLayout
专用于 JScrollPane,含一个 Viewport,一个行头、一个列头、两
个滚动条和四个角组件
Javax.swing OverlayLayout 以彼此覆盖的形式叠置组件
Javax.swing ViewportLayout JViewport 的默认布局管理器
事实上,在大多数情况下,综合运用好这些布局管理器已可以满足需要。当然对于特殊的具体应用,我们可以通过实
现 LayoutManager 或 LayoutManager2 接口来定义自己的布局管理器。下面我们通过几个实例来了解几个常用的布局
管理器的使用方法。
GUI 设计应用实例
3.1 FlowLayout/GridLayout/BorderLayout 的应用实例
3.1.1 应用背景应用背景
假设我们要编写一个简单的计算器 JApplet,其基本界面如下:
3.1.2 解决方法解决方法
通过其界面要求可知,我们可以通过将"BackSpace"和"Clear"JButton 放置在一个 JPanel(1)中,采用 FlowLayout
布局;将显示结果的 JTextField 和该 JPanel 一起放置到另外一个 JPanel(2),采用 GridLayout 布局;而将其它的
JButton 则放置在另外一个 JPanel(3)中,采用 GridLayout 布局;再将 JPanel(2)和 JPanel(3)加入该
JApplet,即可实现界面需求。具体实现方法如下:
/** 以 FlowLayout 布局 JPanel(1)*/
JPanel p1 = new JPanel(new FlowLayout()); // 默认组件从居中开始
// 加入"BackSpace"和"Clear"JButton
p1.add(backButton);
p1.add(clearButton);
/** 以 GridLayout 布局 JPanel(2)*/
JPanel p2 = new JPanel(new GridLayout(2, 1)); // 放置 2 行,每行 1 个组件
// 加入显示结果的 JTextField 和 JPanel(1)
p2.add(displayField);
p2.add(p1);
/** 以 GridLayout 布局 JPanel(3)*/
JPanel p3 = new JPanel(new GridLayout(4, 5)); // 放置 4 行,每行 5 个组件
String buttonStr = "789/A456*B123-C0.D+=";
for (int i = 0; i < buttonStr.length(); i++)
this.addButton(p3, buttonStr.substring(i, i + 1));
//addButton 方法
private void addButton(Container c, String s)
{
JButton b = new JButton(s);
if (s.equals("A"))
b.setText("sqrt");
else if (s.equals("B"))
b.setText("1/x");
else if (s.equals("C"))
b.setText("%");
else if (s.equals("D"))
b.setText("+/-");
b.setForeground(Color.blue);
c.add(b);
b.addActionListener(this);
}
/** 以 BorderLayout 布局 JApplet*/
this.setLayout(new BorderLayout());
this.add(p2, "North");
this.add(p3, "Center");
这样,就一切 OK 啦。具体的实现代码可参见附件中的 CalculateApplet.java 文件。
3.2 带工具栏和状态栏的 GridLayout/BorderLayout 应用实例
3.2.1 实际问题实际问题
在很多情况下我们需要动态设置工具栏和状态栏,看下面的应用实例:
剩余7页未读,继续阅读
资源评论
- 李智嘉2023-07-24实在是宝藏资源、宝藏分享者!感谢大佬~
- fjnstar2023-04-02非常有用的资源,可以直接使用,对我很有用,果断支持!
Dante_9k
- 粉丝: 8
- 资源: 932
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- bdwptqmxgj11.zip
- onnxruntime-win-x86
- onnxruntime-win-x64-gpu-1.20.1.zip
- vs2019 c++20 语法规范 头文件 <ratio> 的源码阅读与注释,处理分数的存储,加减乘除,以及大小比较等运算
- 首次尝试使用 Win,DirectX C++ 中的形状渲染套件.zip
- 预乘混合模式是一种用途广泛的三合一混合模式 它已经存在很长时间了,但似乎每隔几年就会被重新发现 该项目包括使用预乘 alpha 的描述,示例和工具 .zip
- 项目描述 DirectX 引擎支持版本 9、10、11 库 Microsoft SDK 功能相机视图、照明、加载网格、动画、蒙皮、层次结构界面、动画控制器、网格容器、碰撞系统 .zip
- 项目 wiki 文档中使用的代码教程的源代码库.zip
- 面向对象的通用GUI框架.zip
- 基于Java语言的PlayerBase游戏角色设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功