常用的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();
}
}