9.1常用AWT组件

 
常用的AWT组件

 

JAVA的图形用户界面最基本的组成部分就是组件,组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象(按钮,标签等),抽象类Component是所有GUI组件的父类,Component类规定了GUI组件的基本特性,这个类中定义的方法实现了作为一个GUI组件所应具有功能;另外还有一个叫做MenuComponent的类,它是用于菜单方面的父类,菜单方面的组件都是MenuComponent的子类.

Canvas

  • Canvas是具有最基本和最简单的GUI功能的组件.
  • Canvas代表屏幕上的一块空白的矩形区域,程序能够在这个部件表面绘图,也能够捕获用户的操作,产生相应的事件.
  • 当要设计自定制的具有GUI功能的组件类时,继承Canvas将会大大简化编程难度.
编程实例:设计一个自定制的计时器组件,当SHU标在计时器组件上按下时,计时器开始计时,并显示计时时间,当SHU标释放时,计时器停止计时.
 

 

//TestStopWatch.java

import java.awt.*;
import java.awt.event.*;
 
class TestStopWatch extends Frame{
 
    public TestStopWatch(){
          this.add(new StopWatch());
          addWindowListener(new WindowAdapter(){
                public void windowClosing(WindowEvent e){
                      dispose();
                      System.exit(0);
                }
          });
    }
 
    public static void main(String[] args){
          System.out.println("Starting TestStopWatch...");
            TestStopWatch mainFrame = new TestStopWatch();
            mainFrame.setSize(400,400);
          mainFrame.setTitle("TestStopWatch");
            mainFrame.setVisible(true);
    }
}
 
//StopWatch.java
 
import java.awt.Canvas;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.awt.Color;
import java.awt.event.*;
 
public class StopWatch extends Canvas implements Runnable {
    long startTime = 0;
      long endTime = 0;
      boolean bStart = false;
 
    public StopWatch(){
          enableEvents(AWTEvent.MOUSE_EVENT_MASK);
    }
 
    protected void processMouseEvent(MouseEvent e){
          if(e.getID() == MouseEvent.Mouse_PRESSED){ //代表SHU标动作
                startTime = endTime = System.currentTimeMillis(); //当前时间
                repaint();
                bStart = true;
            }
          else if(e.get() == MouseEvent.MOUSE_RE;EASED){
                          endTime = System.currentTimeMillis(); //当前时间
                          repaint();
                          bStart = false;
                          new Thread(this).start();  //启动线程
                      }
    }
 
    public void paint(Graphics g){
          SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
          Date elapsedTime = null;
          try{
                elapsedTime = sdf.parse("00:00:00");
          }catch(Exception e){
                e.printStackTrace();
            }
          elapsedTime.setTime(elapsedTime.getTime() + endTime - startTime);
            String strTime = sdf.format(elapsedTime);
            g.fill3DRect(0,0,78,78,true);
          g.setColor(Color.WHITE);
          g.drawString(strTime,10,20);
    }
 
    public void Run(){
          white(bStart){
                try{
                      Thread.sleep(500);
                }catch(Exceptin e){
                      e.printStackTrace();
                }
                endTime = System.currentTimeMillis(); //当前时间
                repaint();
          }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值