华丽的痘痘
努力成为一个有价值的程序员
登录
注册
全站
当前博客
空间
博客
好友
相册
留言
用户操作
[即时聊天]
[发私信]
[加为好友]
王亚楠
ID:andycpp
共
46915
次访问,排名
2355
好友
17
人,关注者
44
人
做一名合格地java教师
andycpp的文章
原创 45 篇
翻译 1 篇
转载 16 篇
评论 18 篇
最近评论
iq263:
程序员后花园,累了来看看 http://bbs.iq263.cn/
fengzijing:
没有想到sql的查询还有这么多的查询方法,谢了有知道了一些自己不知到的方法
bxyz1203:
hao....
flyever581549:
不错。
zjcone:
很明确,谢谢!
文章分类
JAVA技术
(RSS)
常见算法
(RSS)
代码收藏
(RSS)
随笔
(RSS)
收藏
经典文章
相册
我的相册
高手专栏
Web高手buaawhl的专栏
(RSS)
阿朱的博客
(RSS)
存档
2008年10月(1)
2008年09月(5)
2008年08月(3)
2007年09月(3)
2007年08月(7)
2007年07月(11)
2007年06月(5)
2007年02月(1)
2006年10月(7)
2006年09月(5)
2006年08月(1)
2006年06月(1)
2006年04月(2)
2006年03月(3)
2006年02月(3)
软件项目交易
订阅我的博客
写出第一个Swing程序
收藏
新一篇: 素数环问题的非递归实现
|
旧一篇: 素数环问题
使用JAVA来写一些带有图形界面的程序是一件很有意思的事情。JAVA不光可以编写服务器端程序,用它来编写客户端程序也是非常棒的,本文就来详细讲解一个最简单的JAVA图形界面程序:一个窗体上有3个按钮可以改变窗体的背景颜色。
首先,任何一个图形界面程序都有一个最外层的框架。在JAVA中,这个框架就是JFrame类。需要注意的是,
你不可以往JFrame上面添加按钮之类的组件!
在JAVA中,各种组件的最直接的容器是JPanel,按钮之类的组件必须添加在JPanel中,然后再把JPanel添加到JFrame中。另一个需要注意的是,你不可以直接使用JFrame类,你应该自己写一个类继承JFrame类。所以,JFrame类的编写是相对容易的,不用实现什么具体的功能。下面给出一个例子:
package
andycpp;
import
javax.swing.JFrame;
public
class
JButtonTest
extends
JFrame
...
{
public
JButtonTest()
...
{
add(
new
MyPanel());
//
添加一个面板,具体功能由面板实现
pack();
//
有系统自动调节框架的大小尺寸
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//
使程序能够正常关闭
setVisible(
true
);
//
使框架可见
}
public
static
void
main(String[] args)
...
{
new
JButtonTest();
}
}
我们来看一下,在上面框架的构造函数中,我们调用了4个函数,这4个函数都是必须的,缺少任何一个,程序都会出问题。第一个add函数负责添加一个面板,否则该框架无法实现任何功能。第二个pack函数负责调整框架的大小,否则程序运行后尺寸为0,看不见任何元素。第三个函数大家要注意一下,在JAVA中,当你点击一个窗体右上角的“X”的时候,该窗体并没有被关闭,而是被隐藏了,仍然驻留内存当中。如果我们要真的关闭一个窗体,必须加上这条语句。第四个函数使得窗体可见,因为它默认是不可见的。当然,这4个函数的顺序并无太多要求,可以自由调换。最后,这个类里面还有一个main函数,证明这是一个主类,在main函数中只需创建一个窗体即可,窗体的任何行为都在别处定义,main函数不必负责。
下面我们来看看最有难度的JPanel的编写,因为任何具体的功能都由JPanel实现。我们先给出一个具体的代码,然后详细讲解:
package
andycpp;
import
java.awt.
*
;
import
java.awt.event.
*
;
import
javax.swing.
*
;
public
class
MyPanel
extends
JPanel
...
{
public
MyPanel()
...
{
setPreferredSize(
new
Dimension(
400
,
300
));
//
设置面板大小
JButton blueButton
=
new
JButton(
"
Blue
"
);
//
创建3个按钮
JButton redButton
=
new
JButton(
"
Red
"
);
JButton yellowButton
=
new
JButton(
"
Yellow
"
);
blueButton.addActionListener(
new
ChangeBackColorAction(Color.BLUE));
//
为按钮增加监听器
redButton.addActionListener(
new
ChangeBackColorAction(Color.RED));
yellowButton.addActionListener(
new
ChangeBackColorAction(Color.YELLOW));
add(blueButton);
//
将3个按钮添加到面板上
add(redButton);
add(yellowButton);
}
//
Action类是Panel类的内部类,目的是可以调用Panel的方法
private
class
ChangeBackColorAction
implements
ActionListener
...
{
public
ChangeBackColorAction(Color x)
...
{
c
=
x;
}
public
void
actionPerformed(ActionEvent e)
...
{
//
TODO Auto-generated method stub
setBackground(c);
}
Color c;
}
}
我们来看一下上述代码。上述代码主要就是一个很庞大的构造函数,绝大部分功能都在构造函数中完成。在构造函数中,首先就是定义3个按钮,这个很简单,没什么可说的。接下来为每一个按钮增加一个
监听器
。监听器是什么东西?在JAVA中,组件要完成的任何功能,都是由监听器来实现的,而组件本身不用你写太多代码,只要给他添加一个合适的监听器即可。也就是说,如果我们要点一下按钮就变颜色,那么就写一个会变颜色的监听器;如果我们点一下按钮就关闭窗体,那么就写一个关闭窗体的监听器,然后给按钮添加合适的监听器即可。在这里我们的监听器叫做
ChangeBackColorAction,
这是一个我们自定义的类,下面就会看到。接下来的3行代码就是把按钮添加到面板上,也是很简单的。
再往下看,就是最核心的内容了:监听器的实现!!监听器是一个接口,规定了某些必须实现的功能,而我们则要自定义一个类来实现这个接口。一般按钮类控件都是使用ActionListener监听器,这个监听器只有一个方法,那就是actionPerformed方法。因此,我们只需要在actionPerformed方法中实现改变背景色的功能就可以了。需要注意的一个地方是,我们把这个自定义的监听器定义为Panel的一个内部类,这是为什么呢?这是因为,这个监听器要改变Panel的背景颜色,如果把他定义到外面,他就无法访问到Panel的内部属性,因此也就无法改变Panel的背景色了。
至此,一个最基本的图形界面程序就完成了。
发表于 @
2007年06月29日 02:25:00
|
评论(
loading...
)
|
编辑
新一篇: 素数环问题的非递归实现
|
旧一篇: 素数环问题
评论:没有评论。
发表评论
姓 名:
主 页:
校验码:
看不清,换一张
当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击
登录