1) Canvas编程实例
组件类:
package testStopWatch;
import java.awt.*;
import java.awt.event.*;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
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) {//判断事件的id是不是鼠标按下事件
startTime=endTime=System.currentTimeMillis();//使时间归零
repaint();//重新绘制时间
new Thread(this).start();//开始重绘组件的线程
bStart=true;//开锁线程内循环
}else if (e.getID()==MouseEvent.MOUSE_RELEASED) {//判断事件的id是不是鼠标释放事件
//endTime=System.currentTimeMillis();
repaint();//重新绘制时间
bStart=false;锁住线程内循环
}
}
public void paint(Graphics g)
{
SimpleDateFormat sdf=new SimpleDateFormat("hh:mm:ss");//设置时间转化格式
Date date1=null;//设置一个时间
try {
date1 = sdf.parse("00:00:00");//设置时间初始值
} catch (ParseException e) {
e.printStackTrace();
}
date1.setTime(date1.getTime()+endTime-startTime);//获得当前时间
String strTime=sdf.format(date1);//设置输出时间的格式
g.fill3DRect(0, 0, 78, 28,false);//设置组件的背景色为黑色
g.setColor(Color.WHITE);//设置字体为白色
g.drawString(strTime, 10, 20);//绘制时间
}
public void run() {
while (bStart) {
try {
Thread.sleep(500);//500ms刷新一次
} catch (InterruptedException e) {
e.printStackTrace();
}
endTime=System.currentTimeMillis();//重新设置结束时间
repaint();//重绘组件
}
}
}
主程序:
this.add(new StopWatch());//在窗口中添加组件
问题:不能显示00:00:00,显示的都是12:00:00
2)菜单
主程序:
package testMenuBar;
import java.awt.*;
import java.awt.event.*;
public class TestMenuBar extends Frame {
MenuBar menuBar=new MenuBar();
Menu fileM=new Menu("File");
Menu editM=new Menu("Edit");
Menu toolsM=new Menu("Tools");
Menu helpM=new Menu("Help");
MenuItem fileM1=new MenuItem("New");
MenuItem fileM2=new MenuItem("Open");
MenuItem fileM3=new MenuItem("Save");
Menu fileM4=new Menu("Print");
MenuItem printM1=new MenuItem("preview");
MenuItem printM2=new MenuItem("setting");
CheckboxMenuItem fileM5=new CheckboxMenuItem("Quit",true);
public TestMenuBar()//添加构造方法
{
//添加菜单栏的项
menuBar.add(fileM);
menuBar.add(editM);
menuBar.add(toolsM);
menuBar.add(helpM);
//添加第一个菜单的子项
fileM.add(fileM1);
fileM.add(fileM2);
fileM.add(fileM3);
fileM.add(fileM4);
fileM.addSeparator();
fileM.add(fileM5);
//添加第四个菜单的子项
fileM4.add(printM1);
fileM4.add(printM2);
//给菜单项添加监听器
MenuListener m1=new MenuListener();
printM1.addActionListener(m1);
printM2.addActionListener(m1);
//把菜单添加到窗口中
this.setMenuBar(menuBar);
addWindowListener(new WindowAdapter(){//注册窗口适配器
public void windowClosing(WindowEvent arg0) {//重写关闭窗口的方法
dispose(); //释放该窗口
System.exit(0);//停止程序的运行
}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("starting TestStopWatch..");
TestMenuBar t=new TestMenuBar();
t.setSize(400, 400);//设置窗口的大小
t.setTitle("TestMyButton");
t.setVisible(true);
}
}
菜单监听器类:
package testMenuBar;
import java.awt.event.*;
import java.awt.*;
public class MenuListener implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if (arg0.getActionCommand().equals("preview")) {//添加preview项的处理事件
System.out.println("doing preview");
}else if (arg0.getActionCommand().equals("setting")) {//添加setting项的处理事件
System.out.println("doing setting");
}
}
}
3)Dialog类实例
子窗口类:
package testDialog;
import java.awt.*;
import java.awt.event.*;
//定义一个对话框类
public class MyDialog extends Dialog {
private TextField tf=new TextField(10);//定义一个10字符长度的文本域
private String strInfo=null; //定义一个成员变量
public MyDialog(Frame owner, String title,boolean modal) {//定义构造函数
super(owner, title, modal);
setBounds(0, 0, 200, 150);//设置窗口左上角的坐标和窗口的大小
Button b1=new Button("应用");//设置应用按钮
Button b2=new Button("确定");//设置确定按钮
this.add(tf,"North");//把文本框设置在上边
this.add(b1,"Center");//把b1按钮设置在中间
this.add(b2,"East");//把b2按钮设置在右侧
if (this.isModal()) {//如果当前窗口是模式窗口则应用窗口是无效的
b1.setEnabled(false);
}
b1.addActionListener(new ActionListener(){//注册应用按钮的监听器
public void actionPerformed(ActionEvent arg0) {
((TestDialog)getOwner()).setInfo(tf.getText());//把当前窗口的文本框信息赋值给调用窗口
}
});
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
if (isModal()) {//如果是模式窗口,把信息传递给成员变量
strInfo=tf.getText();
}else {
//如果是非模式窗口,则直接把值传递给父窗口
((TestDialog)getOwner()).setInfo(tf.getText());
}
//释放该窗口
dispose();
}
});
}
public void setInfo(String strInfo)
{
//设置字符串信息
tf.setText(strInfo);
}
public String getInfo()
{
//返回字符串信息
return strInfo;
}
}
主类:
package testDialog;
import java.awt.*;
import java.awt.event.*;
public class TestDialog extends Frame {
private TextField tf=new TextField(10);
public TestDialog()//添加构造方法
{
Button b1=new Button("打开模化对话框");
Button b2=new Button("打开非模态对话框");
add(tf,"North");
add(b1,"Center");
add(b2,"East");
b1.addActionListener(new ActionListener(){//为模式窗口按钮注册监听器
public void actionPerformed(ActionEvent arg0) {
MyDialog dlg=new MyDialog(TestDialog.this,"modal dialog",true);
dlg.setInfo(tf.getText());//把主窗口的信息传递给模式窗口
dlg.setVisible(true);
tf.setText(dlg.getInfo());//设置模式窗口文本框的信息
}
});
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
MyDialog dlg=new MyDialog(TestDialog.this,"modal dialog",false);
dlg.setInfo(tf.getText());//获得非模式窗口的文本信息
dlg.setVisible(true);
}
});
addWindowListener(new WindowAdapter(){//注册窗口适配器
public void windowClosing(WindowEvent arg0) {//重写关闭窗口的方法
dispose(); //释放该窗口
System.exit(0);//停止程序的运行
}
});
}
public void setInfo(String strInfo)
{
tf.setText(strInfo);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("starting TestStopWatch..");
TestDialog t=new TestDialog();
t.setSize(400, 400);//设置窗口的大小
t.setTitle("TestMyButton");
t.setVisible(true);
}
}
4)checkbox类实例
package testCheckbox;
import java.awt.*;
import java.awt.event.*;
public class TestCheckbox extends Frame {
Checkbox cb1=new Checkbox("你喜欢我吗",true);
CheckboxGroup gb=new CheckboxGroup();
Checkbox cb2=new Checkbox("喜欢",true,gb);
Checkbox cb3=new Checkbox("不喜欢",false,gb);
CbItemListener cbi=new CbItemListener();
class CbItemListener implements ItemListener
{
public void itemStateChanged(ItemEvent arg0) {
Checkbox cb=(Checkbox)arg0.getItemSelectable();
if (cb.getLabel().equals("你喜欢我吗")) {
if (cb.getState()) {
System.out.println("我很高兴");
}else {
System.out.println("我很伤心");
}
}/*else if (cb.getLabel().equals("喜欢")) {
if (arg0.getStateChange()==ItemEvent.SELECTED) {
System.out.println("我爱你");
}else {
System.out.println("我也不喜欢你");
}
}*/else {
Checkbox cbx=gb.getSelectedCheckbox();
if (cbx!=null) {
System.out.println(cbx.getLabel());
}
}
}
}
public TestCheckbox()//添加构造方法
{
FlowLayout f1=new FlowLayout();
setLayout(f1);
add(cb1);
add(cb2);
add(cb3);
cb1.addItemListener(cbi);
cb2.addItemListener(cbi);
cb3.addItemListener(cbi);
addWindowListener(new WindowAdapter(){//注册窗口适配器
public void windowClosing(WindowEvent arg0) {//重写关闭窗口的方法
dispose(); //释放该窗口
System.exit(0);//停止程序的运行
}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("starting TestStopWatch..");
TestCheckbox t=new TestCheckbox();
t.setSize(400, 400);//设置窗口的大小
t.setTitle("TestMyButton");
t.setVisible(true);
}
}
5)Choice类实例
package testCheckbox;
import java.awt.*;
import java.awt.event.*;
public class TestCheckbox extends Frame {
Checkbox cb1=new Checkbox("你喜欢我吗",true);
CheckboxGroup gb=new CheckboxGroup();
Checkbox cb2=new Checkbox("喜欢",true,gb);
Checkbox cb3=new Checkbox("不喜欢",false,gb);
CbItemListener cbi=new CbItemListener();
Choice ch=new Choice();
class ChItemListener implements ItemListener
{
public void itemStateChanged(ItemEvent arg0) {
System.out.println(arg0.getItem());
}
}
class CbItemListener implements ItemListener
{
public void itemStateChanged(ItemEvent arg0) {
Checkbox cb=(Checkbox)arg0.getItemSelectable();
if (cb.getLabel().equals("你喜欢我吗")) {
if (cb.getState()) {
System.out.println("我很高兴");
}else {
System.out.println("我很伤心");
}
}/*else if (cb.getLabel().equals("喜欢")) {
if (arg0.getStateChange()==ItemEvent.SELECTED) {
System.out.println("我爱你");
}else {
System.out.println("我也不喜欢你");
}
}*/else {
Checkbox cbx=gb.getSelectedCheckbox();
if (cbx!=null) {
System.out.println(cbx.getLabel());
}
}
}
}
public TestCheckbox()//添加构造方法
{
FlowLayout f1=new FlowLayout();
setLayout(f1);
add(cb1);
add(cb2);
add(cb3);
cb1.addItemListener(cbi);
cb2.addItemListener(cbi);
cb3.addItemListener(cbi);
ch.add("choice1");
ch.add("choice2");
ch.add("choice3");
add(ch);
ch.addItemListener(new ChItemListener());
addWindowListener(new WindowAdapter(){//注册窗口适配器
public void windowClosing(WindowEvent arg0) {//重写关闭窗口的方法
dispose(); //释放该窗口
System.exit(0);//停止程序的运行
}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("starting TestStopWatch..");
TestCheckbox t=new TestCheckbox();
t.setSize(400, 400);//设置窗口的大小
t.setTitle("TestMyButton");
t.setVisible(true);
}
}
6)Panel和ScrollPanel
package testPane;
import java.awt.*;
import java.awt.event.*;
public class TestPane extends Frame {
public TestPane()//添加构造方法
{
TextArea ta=new TextArea("",10,50,TextArea.SCROLLBARS_NONE);
ScrollPane sp=new ScrollPane();
sp.add(ta);
add(sp);
addWindowListener(new WindowAdapter(){//注册窗口适配器
public void windowClosing(WindowEvent arg0) {//重写关闭窗口的方法
dispose(); //释放该窗口
System.exit(0);//停止程序的运行
}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("starting TestStopWatch..");
TestPane t=new TestPane();
t.setSize(200, 200);//设置窗口的大小
t.setTitle("TestMyButton");
t.setVisible(true);
}
}