天天看点

java GUI 快速入门

java 中编写 gui 有两中工具包,分别为 awt、swing。

swing 是 awt 的拓展,swing 具有比 awt 丰富的组件和方法。

awt 和 swing 都能跨平台使用;awt 会随着不同的系统平台,ui 样式会有所变化,swing 则不会,设计完毕后在所有平台下样式一致。

下面是一个窗口示例

java GUI 快速入门

创建一个窗口,要继承 <code>frame</code>,同时会继承 frame 中的一些方法;

frame 中:

super 方法可以设置窗口标题;

setsize 设置窗口大小,<code>(width,hight)</code>

setvisible 设置是否显示窗口,true 显示,false 隐藏

<code>setlayout(new flowlayout());</code>用于设置窗口布局;

<code>add(组件);</code> 用于向窗口添加组件,例如按钮等。

我们来向窗口添加组件

在 main 方法中启动窗口

效果

java GUI 快速入门

java 中,事件分为三个方面描述,

事件源:发生事件的对象

事件处理:委托事件处理模型

事件监听者:负责处理事件

java GUI 快速入门

首先b监听a,设置监听的内容,并设置响应内容。

一旦a本身的状态改变,就触发c;

c执行d

妈妈跟儿子说,你作业做完了,妈妈就让爸爸就给你削个苹果吃。

妈妈:事件监控者

儿子:事件源

动作:做完作业

事件:爸爸削个苹果给儿子

妈妈监控儿子,监控是否完成作业。设置作业完成后,触发事件:削苹果;

儿子做完作业,状态变更,触发事件;事件开始执行。

简单来说 b 告诉 a ,如果 a 怎么样了,就去做一件事情c。

我们继续利用上面的窗口,实现按钮点击时,改变窗口背景颜色。

引入

实现接口

按钮有个事件监听器 <code>addactionlistener</code>,我们将要执行的工作 <code>actionperformed</code> 绑定进去。

当条件发生时,就会触发此工作。

妈耶,我都不知道自己在说啥了。

c# 中,事件没有那么麻烦,也不需要这么bb。。。

另外, actionevent ,有两个常用方法

awt 中,主要有 6 中布局方式。

flowlayout 流式布局

默认布局,控件从上到下,从左到右地排序。

borderlayout 边缘布局

自动停靠窗体边缘,并且长宽随着窗体的变化。

java GUI 快速入门

gridlayout 网格布局

将容器分成若干行和若干列。

cradlayout 卡片布局

像扑克牌一样,每张牌是一个控件,多个控件叠加起来,每次只能查看一个。

gridbaglayout 网格块布局

null 采用坐标定位布局

创建一个窗体,并设置流式布局

继承 frame 的窗体中,使用 setlayout方法 可以设置布局。

如图是 gui 控件中常用的控件关系继承图。

java GUI 快速入门

组件分为容器(container)和控件。

容器又分为窗体(window)和面板(panel)。

component 是所有组件的父类,component 常用方法如下

文本框(textfield)只能显示一行文本,文本域(textarea)则可以显示、编辑多行文字。

文本框的构造函数如下

文本域的构造函数如下

文本控件的常用方法有

文本域(textarea)中,还具有以下两个常用方法

文本框有两个常用事件

actionevent事件

在文本框按回车键时引发

注册:<code>addactionlistener()</code> 接口:<code>actionlistener</code>

方法:<code>public void actionperformed(actionevent e)</code>

textevent事件

对文本输入部件数据更改操作 (添加、修改、删除)

注册: <code>addtextlistener()</code>

接口:<code>textlistener</code>

方法: <code>public void textvaluechanged(textevent e)</code>