没有合适的资源?快使用搜索试试~ 我知道了~
Java就业培训教程GUI下.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 23 浏览量
2022-07-14
15:49:14
上传
评论
收藏 805KB PDF 举报
温馨提示
试读
29页
Java就业培训教程GUI下.pdf
资源推荐
资源详情
资源评论
268
第 9 章 GUI (下)
9.1 常用 AWT 组件
在上一章开始的第一个程序中,我们就用到了按钮( Button ),这是最简单的组件之一
了,在 AWT里还有很多用于 GUI 设计的组件,我们现在就来了解更多的 GUI 组件。如图 9.1
所示描述了 AWT中的组件及类层次关系图。
图 9. 1
9.1.1 Component类
Java 的图形用户界面的最基本组成部分是组件,组件是一个可以以图形化的方式显示
在屏幕上并能与用户进行交互的对象, 例如一个按钮, 一个标签等。 抽象类 Component是所
有 Java GUI 组件的共同父类。 Component 类规定了所有 GUI 组件的基本特性,该类中定义
的方法实现了作为一个 GUI 组件所应具备的基本功能。 Java 程序要显示的 GUI 组件必须是
抽象类 Component 或 MenuComponent的子类。
9.1.2 Canvas
Canvas 代表屏幕上的一块空白的矩形区域,程序能够在这个部件表面绘图,也能够捕
269
获用户的操作,产生相应的事件, Canvas 可以说是具有最基本的和最简单的 GUI 功能的部
件。当我们要设计一种自己定制的具有 GUI 功能的部件类, 我们的这个类就可以继承 Canvas,
这样,我们的部件类就已经完成了 GUI 的基本功能, 我们只需要在这个基础上增加子类部件
所专有的外观和功能的相关代码就行了,我们要想绘制子类部件的外观,我们必须覆盖
Canvas 的 paint 方法。
我们现在设计一个计时器部件, 鼠标在部件上按下时, 计时器开始计时, 并在部件上显
示计时时间,鼠标释放时,计时器停止计时。 下面是这个计时器的程序代码,其中涉及到的
技巧和知识点,都在前面有过讲解,这里就不作详细解释了。
程序清单: TestStopWatch.java
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.SimpleDateFormat;
class StopWatch extends Canvas implements Runnable
{
private long startTime = 0;
private long endTime = 0;
private boolean bStart = false;
public StopWatch()
{
enableEvents(AWTEvent.MOUSE_EVENT_MASK);
setSize(80,30);
}
protected void processMouseEvent(MouseEvent e)
{
if(e.getID() == MouseEvent.MOUSE_PRESSED)
{
bStart = true;
startTime = endTime = System.currentTimeMillis();
repaint();
new Thread(this).start();
}
else if(e.getID() == MouseEvent.MOUSE_RELEASED)
{
bStart = false;
repaint();
}
super.processMouseEvent(e);
}
public void paint(Graphics g)
{
SimpleDateFormat sdf= new SimpleDateFormat("HH:mm:ss");
Date elapsedTime =null;
270
try
{
elapsedTime= sdf.parse("00:00:00");
}catch(Exception e){}
elapsedTime.setTime(endTime - startTime +
elapsedTime.getTime());
String display = sdf.format(elapsedTime);
g.drawRect(0,0,78,28);
g.fill3DRect(2,2,75,25,true);
g.setColor(Color.RED);
g.drawString(display,10,20);
}
public void run()
{
while(bStart)
{
try
{
Thread.sleep(500);
}catch(Exception e){e.printStackTrace();}
endTime = System.currentTimeMillis();
repaint();
}
}
}
public class TestStopWatch
{
public static void main(String [] args)
{
Frame f =new Frame("StopWatch");
f.add(new StopWatch());
f.setSize(200,200);
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}
编译并运行这个程序, 你一定要用鼠标按住计时器部件几秒钟, 你就能看到我们期望的
效果了,如图 9.2 所示。
271
图 9.2
如果你想让这个计时器部件尽可能满足更多的应用需求, 你还需要增加一些功能, 如允
许用户设置文本的颜色,文本的大小随部件大小的改变而改变等。
9.1.3 Checkbox
如果你熟悉 Windows 的应用,对单选按钮和多选按钮一定不会陌生,这两种按钮都有
选中和不选两种状态,如图 9.3 所示。对多选按钮来说, 如果有多个这样的按钮, 每个按钮
之间没有制约关系, 可以同时选中其中的多个。 而单选按钮则要求有一组按钮, 这一组按钮
中同时只能有一个为选中状态。
Java 里提供的这个 Checkbox 类来建立单选按钮和多选按钮, Checkbox 的使用很容易,
如果要创建多选按钮,我们只要使用 public Checkbox(String label, boolean state) 这
个构造函数来创建 Checkbox 对象就行了,创建多选按钮要用到两个参数,前一个是选框旁
边的说明文字,后一个参数决定选框是否默认被选定。因为创建单选按单钮需要一组按钮,
所以在创建单选按钮时,我们还需要指定这个按钮所属于的组,使用
public Checkbox(String label,boolean state,CheckboxGroup group)
这个构造函数创建的就是单选按钮。其中, CheckboxGroup 类对象指定了这个单选按钮
所属于的组。
对一般的程序来说, 需要处理单选按钮和多选按钮的 ItemEvent 事件,从而获得用户选
择 的 结 果 。 处 理 ItemEvent 事 件 的 监 听 器 接 口 为 ItemListener , 其 中 只 有 一 个
itemStateChanged 方法,显然, ItemEvent 是一种语义事件。
下面是一段创建多选按钮和单选按钮以及相关事件处理的程序代码:
程序清单: TestCheckbox.java
import java.awt.*;
import java.awt.event.*;
public class TestCheckbox
{
Checkbox cb1=new Checkbox(" 你喜欢我吗? ",true);
CheckboxGroup cbg=new CheckboxGroup();
Checkbox cb2=new Checkbox(" 喜欢 ",cbg,true);
Checkbox cb3=new Checkbox(" 不喜欢 ",cbg,false);
public void init()
{
Frame f=new Frame("TestCheckBox");
272
// 创建 FlowLayout 布局管理器,关于布局管理器,本章后面有专门的讲解,看不明白
// 的读者暂时可以不去下面两句代码的作用。
FlowLayout fl=new FlowLayout();
f.setLayout(fl);
f.add(cb1);
f.add(cb2);
f.add(cb3);
cb1.addItemListener(new CbItemListener());
cb2.addItemListener(new CbItemListener());
cb3.addItemListener(new CbItemListener());
f.setBounds(0,0,300,100);
f.setVisible(true);
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
class CbItemListener implements ItemListener
{
public void itemStateChanged(ItemEvent e)
{
Checkbox cb = (Checkbox)e.getItemSelectable();
if(cb.getLabel().equals(" 你喜欢我吗? "))
{
if(cb.getState() == true)
System.out.println(" 我很高兴 ");
else
System.out.println(" 我很伤心 ");
}
/*else if(cb.getLabel().equals(" 喜欢 "))
{
if(e.getStateChange() == ItemEvent.SELECTED)
System.out.println(" 我也喜欢你 ");
else
System.out.println(" 我也不喜欢你 ");
}*/
else
{
Checkbox cbx =cbg.getSelectedCheckbox();
if(cbx != null)
剩余28页未读,继续阅读
资源评论
yyc13139216118
- 粉丝: 2
- 资源: 6万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功