常用AWT组件-2

来源:互联网 发布:淘宝宝贝改类目影响 编辑:程序博客网 时间:2024/05/30 07:13

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:0000

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");

       }

    }

 

}

3Dialog类实例

子窗口类:

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);

    }

 

}

4checkbox类实例

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);

    }

 

}

5Choice类实例

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);

    }

 

}

6PanelScrollPanel

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);

    }

 

}

 

 

 

 

原创粉丝点击