新Java程序设计实例教程教学课件 刘志成 ch05_Java图形用户界面技术
- 格式:ppt
- 大小:2.67 MB
- 文档页数:55
教案纸第5章Java的图形用户界面(6学时)【主要讲授内容及时间分配】5.1 图形用户界面概述(25分钟)5.2 AWT中常用类的层次结构(20分钟)5.3 基本组件的使用(45分钟)5.4 布局管理器(45分钟)5.5 事件处理(90分钟)5.6 菜单、绘图类的使用(45分钟)【重点与难点】1、重点:(1)基本组件的使用,包括Label、Button、TextField、TextArea、List、Checkbox和CheckboxGroup的构造方法和常用方法的使用。
(2)布局管理器的使用,包括FlowLayout、GridLayout、BorderLayout。
(3)事件处理。
2、难点:事件处理。
【教学要求】1、可以构造出图形用户界面;2、可以为界面上的组件编写相应的事件处理代码;3、可以构造带有菜单的应用程序;4、可以写小游戏。
【实施方法】课堂讲授,PPT配合public class LabelDemo extends Frame{public LabelDemo(){Label lb1,lb2,lb3;lb1=new Label("LeftLabel");lb2=new Label("CenterLabel",Label.CENTER);lb3=new Label("RightLabel",Label.RIGHT);lb3.setText("改变我的名字");lb3.setAlignment(Label.CENTER);//lb3.setVisible(false);setLayout(new FlowLayout());add(lb1);add(lb2);add(lb3);}public static void main(String args[]){LabelDemo Ld=new LabelDemo();Ld.setVisible(true);Ld.pack();}}public class MyButtons{public static void main(String args[]){Frame f = new Frame();f.setLayout(new FlowLayout());Button button1 = new Button("Ok");Button button2 = new Button("Open");Button button3 = new Button("Close");f.add(button1);f.add(button2);f.add(button3);f.setSize(300,100);f.setVisible(true);}import java.awt.*;public class CheckboxDemo2 extends Frame{public CheckboxDemo2(){setLayout(new FlowLayout());String University[]={"Tsinghua","Pecking","Fudan","Nanki","Tianjin"};Checkbox c[]=new Checkbox[5];Label label=new Label("There are 5 University!");Label label2=new Label("There are 5 University!");Label label3=new Label("There are 5 University!");add(new Label("Please choice the University:"));for(int i=0;i<5;i++){c[i]=new Checkbox(University[i]);add(c[i]);}add(label);add(label2);add(label3);this.pack();show();}public static void main(String args[]){CheckboxDemo2 cbd=new CheckboxDemo2();cbd.setSize(400,500);}import java.awt.*;import java.awt.CheckboxGroup;public class CheckboxGroupDemo2 extends Frame{public CheckboxGroupDemo2(){ super("CheckboxGroupDemo2");setLayout(new FlowLayout());String University[]={"Tsinghua","Pecking","Fudan","Nanki","Tianjin"};Checkbox c[]=new Checkbox[5];Label label=new Label("There are 5 University!");CheckboxGroup d=new CheckboxGroup();add(new Label("Please choice the University:"));for(int i=0;i<5;i++){c[i]=new Checkbox(University[i],d,true);add(c[i]);}//add(d);add(label);show();}public static void main(String args[]){CheckboxGroupDemo2 cbg=new CheckboxGroupDemo2();cbg.setSize(600,700);}import java.awt.*;public class ListTest extends Frame{public ListTest(){super("ListTest");List lt=new List(6,true);setLayout(new FlowLayout());lt.addItem("you");lt.addItem("你");lt.addItem("I");lt.addItem("我");lt.addItem("he");lt.addItem("他");add(lt);}public static void main(String args[]){ListTest lt=new ListTest();lt.setVisible(true);lt.setSize(500,400);}}import java.awt.*;public class TextFieldTest extends Frame{public TextFieldTest(){super("Test TextField");TextField tf=new TextField("&&&&&",20);TextArea ta=new TextArea("this is a new text",6,20);setLayout(new FlowLayout());tf.setEchoChar('*');//tf.setText("9999999");add(tf);add(ta);show();}public static void main(String args[]){TextFieldTest tft=new TextFieldTest();//tft.setVisible(false);tft.setSize(500,400);tft.pack();}}import java.awt.event.*;public class MyFirstFrame1 extends Frame implements ActionListener{ private Button quit=new Button("Quit");public MyFirstFrame1(){super("Test Window");add(quit);pack();show();quit.addActionListener(this);}public void actionPerformed(ActionEvent e){dispose();// System.exit(0);}public static void main(String args[]){MyFirstFrame1 mf=new MyFirstFrame1();}}import java.awt.event.*;public class MyFirstFrame2 extends Frame {private Button quit=new Button("Quit");public MyFirstFrame2(){super("Test Window");add(quit);pack();show();quit.addActionListener(new ButtonHander());}{ new MyFirstFrame2();}}class ButtonHandler implements ActionListener {public void actionPerformed(ActionEvent e){System.exit(0);}}import java.awt.*;import java.awt.event.*;public class ClickMe extends Frame implements ActionListener{ private Button quit =new Button("Quit");private Button click=new Button("Click here");private TextField text=new TextField(10);private boolean secondClick=false;public ClickMe(){super("Click Example");setLayout(new FlowLayout());add(quit);add(click);click.addActionListener(this);quit.addActionListener(this);add(text);pack();show();}public void actionPerformed(ActionEvent e){if(e.getSource()==quit)System.exit(0);else if(e.getSource()==click){if(secondClick)text.setText("not again!");elsetext.setText("Uh,it tickless");secondClick=!secondClick;}}ClickMe myFrame=new ClickMe();}}import java.awt.*;import java.awt.event.*;public class TaskList extends Frame implements ActionListener{ private Button add=new Button("添加");private Button del=new Button("删除");private Button up=new Button("增加优先级");private Button down=new Button("降低优先级");private List list=new List();private TextField taskInput=new TextField();private Label priorityLabel=new Label("改变优先级"); private Label taskLabel=new Label("工作事项:");private class WindowCloser extends WindowAdapter{public void windowClosing(WindowEvent e){System.exit(0);}}public TaskList(){super("工作事项表");setup();add.addActionListener(this);del.addActionListener(this);up.addActionListener(this);down.addActionListener(this);addWindowListener(new WindowCloser());list.addActionListener(this);}public static void main(String args[]){TaskList tl=new TaskList();tl.pack();tl.show();}private void setup(){Panel buttons=new Panel();buttons.setLayout(new FlowLayout());buttons.add(add);buttons.add(del);Panel priorities=new Panel();priorities.setLayout(new FlowLayout());priorities.add(up);priorities.add(priorityLabel);priorities.add(down);Panel input=new Panel();input.setLayout(new BorderLayout());input.add("West",taskLabel);input.add("Center",taskInput);Panel top=new Panel();top.setLayout(new GridLayout(2,1));top.add(input);top.add(priorities);setLayout(new BorderLayout());add("Center",list);add("South",buttons);add("North",top);}public void actionPerformed(ActionEvent e){if((e.getSource()==add)&&(!taskInput.getText().equals(" "))) handleAdd(taskInput.getText().trim());else if((e.getSource()==del)&&(list.getSelectedIndex()>=0)) handleDel(list.getSelectedIndex());else if((e.getSource()==up)&&(list.getSelectedIndex()>0)) handleIncPriority(list.getSelectedIndex());else if ((e.getSource()==down)&&(list.getSelectedIndex()>=0)) handleDecPriority(list.getSelectedIndex());else if(e.getSource()==list)taskInput.setText(list.getSelectedItem());taskInput.requestFocus();}private void handleAdd(String newTask){list.add(newTask);list.select(list.getItemCount()-1);taskInput.setText("");}private void handleDel(int pos){list.remove(pos);list.select(pos);}private void handleIncPriority(int pos){String item=list.getItem(pos);list.remove(pos);list.add(item,pos-1);list.select(pos-1);}private void handleDecPriority(int pos){if(pos<list.getItemCount()-1){String item=list.getItem(pos);list.remove(pos);list.add(item,pos+1);list.select(pos+1);}}}3.事件源是Window(WindowListener和WindowAdapter) import java.awt.*;import java.awt.event.*;public class MultipleEventTester extends Frame implements WindowListener,MouseListener,KeyListener{public MultipleEventTester(){addKeyListener(this);addWindowListener(this);addMouseListener(this);setSize(400,400);show();}//窗口事件处理方法public void windowClosing(WindowEvent we){System.exit(0);}public void windowOpened(WindowEvent we){System.out.println("Window opened");}public void windowClosed(WindowEvent we){ System.out.println("Window closed--"+we);}public void windowIconified(WindowEvent we){ System.out.println("Window iconified---"+we);}public void windowDeiconified(WindowEvent we){ System.out.println("Window deiconnified---"+we); }public void windowActivated(WindowEvent we){ System.out.println("Window activated---"+we);}public void windowDeactivated(WindowEvent we){ System.out.println("Window deactivated---"+we); }//鼠标事件处理方法public void mousePressed(MouseEvent me){ System.out.println("Mouse Pressed***"+me);}public void mouseReleased(MouseEvent me){ System.out.println("Mouse Released***"+me);}public void mouseEntered(MouseEvent me){ System.out.println("Mouse Entered***"+me);}public void mouseExited(MouseEvent me){ System.out.println("Mouse Exited***"+me);}public void mouseClicked(MouseEvent me){ System.out.println("Mouse Clicked***"+me);}//键盘事件处理方法public void keyPressed(KeyEvent ke){System.out.println("key Pressed@@@"+ke);}public void keyReleased(KeyEvent ke){System.out.println("key Released@@@"+ke);}public void keyTyped(KeyEvent ke){System.out.println("key Typed@@@"+ke);}//public static void main(String args[]){MultipleEventTester p=new MultipleEventTester();}}4.事件源是Mouse(MouseListener, MouseMotionListener, MouseAdapter) import java.awt.*;import java.awt.event.*;public class MouseEventDemo extends Frame{public MouseEventDemo(){Button btnMouse=new Button("测试鼠标事件");btnMouse.addMouseListener(new MyMouseListener());btnMouse.addMouseMotionListener(new MyMouseMotionListener());this.setLayout(new FlowLayout());this.add(btnMouse);this.setSize(400,300);this.setVisible(true);}public static void main(String args[]){MouseEventDemo frame=new MouseEventDemo();frame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}class MyMouseListener extends MouseAdapter{public void mouseClicked(MouseEvent e){if(e.isPopupTrigger())System.out.println("你现在单击鼠标右键");if(e.getClickCount()==2)System.out.println(" 你现在双击鼠标");}}class MyMouseMotionListener extends MouseMotionAdapter{public void mouseMoved(MouseEvent e){ System.out.println("鼠标组件区域内移动");}}}import java.awt.*;import java.awt.event.*;public class KeyEventDemo extends Frame{private TextField tf=new TextField(10);public KeyEventDemo(){tf.addKeyListener(new TextfieldListener());add(tf);pack();setVisible(true);}public static void main(String args[]){KeyEventDemo frame=new KeyEventDemo();frame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}class TextfieldListener implements KeyListener{int nKeycode;//键盘按下事件public void keyPressed(KeyEvent e){nKeycode=e.getKeyCode(); //返回键代码System.out.println("KEY_PRESSED:"+e.getKeyText(nKeycode));//返回键代码nKeyCode文字说明}//键盘释放事件public void keyReleased(KeyEvent e){nKeycode=e.getKeyCode();System.out.println("KEY_RELEASED:"+e.getKeyText(nKeycode));}//键盘中的非系统键public void keyTyped(KeyEvent e){nKeycode=e.getKeyCode();System.out.println("KEY_TYPED:"+e.getKeyText(nKeycode));}}}import java.awt.*;import java.awt.event.*;public class Bird extends Thread{private int xdir=2*(1-2*(int)Math.round(Math.random())); private int ydir=2*(1-2*(int)Math.round(Math.random())); private boolean running=false;private Cage cage=null;protected int x,y;Image bird=Toolkit.getDefaultToolkit().getImage("qq.jpg");public Bird(Cage _cage,int _x,int _y){cage =_cage;x=_x;y=_y;start();}public void start(){running=true;super.start();}public void halt(){running=false;}public void run(){while(running){move();try{sleep(120);}catch(InterruptedException e){System.err.println("Thread interrupted");}cage.repaint();}}private void move(){x+=xdir;y+=ydir;if(x>cage.getSize().width){x=cage.getSize().width;xdir*=(-1);}if(x<0) xdir*=(-1);if(y>cage.getSize().height){y=cage.getSize().height;ydir*=(-1);}if(y<0) ydir*=-1;}public void draw(Graphics g){g.drawImage(bird,x,y,30,30,cage);}}import java.awt.*;import java.awt.event.*;public class Cage extends Frame implements ActionListener{ private Button quit=new Button("Quit");private Button start=new Button("Start");private Button stop=new Button("Stop");private Bird birds[]=new Bird[20];Image bird=Toolkit.getDefaultToolkit().getImage("qq.jpg");public Cage(){super("Cage with Birds");setLayout(new FlowLayout());add(quit); quit.addActionListener(this);add(start); start.addActionListener(this);add(stop); stop.addActionListener(this);setSize(400,500);this.setVisible(true);for(int i=0;i<birds.length;i++){int x=(int)(getSize().width*Math.random());int y=(int)(getSize().height*Math.random());birds[i]=new Bird(this,x,y);}}public void actionPerformed(ActionEvent e){if(e.getSource()==stop)for(int i=0;i<birds.length;i++)birds[i].halt();if(e.getSource()==start)for(int i=0;i<birds.length;i++){birds[i].halt();birds[i]=new Bird(this,birds[i].x,birds[i].y);}if(e.getSource()==quit)System.exit(0);}public void paint(Graphics g){for(int i=0;i<birds.length;i++)if(birds[i]!=null)birds[i].draw(g);}public static void main(String args[]){Cage table=new Cage();}}import java.applet.*;import java.awt.*;public class DrawWithCanvas extends Frame{ private Button draw=new Button("Draw"); private DrawCanvas canvas =new DrawCanvas();public DrawWithCanvas(){Panel panel=new Panel();panel.setLayout(new FlowLayout());panel.add(draw);setLayout(new BorderLayout());add("North",panel);add("South",canvas);this.setSize(400,500);pack();show();}public static void main(String args[]){DrawWithCanvas dnc=new DrawWithCanvas(); }}class DrawCanvas extends Canvas{public DrawCanvas(){this.setSize(400,500);}public void paint(Graphics g){for(int i=12;i<getSize().height;i+=12){g.drawString("y location is:"+i,10,i);}}}import java.awt.*;public class DrawNoCanvas extends Frame{ private Button draw=new Button("Draw");public DrawNoCanvas(){Panel panel=new Panel();panel.setLayout(new FlowLayout());panel.add(draw);setLayout(new BorderLayout());add("North",panel);pack();show();}public void paint(Graphics g){for(int i=12;i<getSize().height;i+=12){g.drawString("y location:"+i,10,i);}}public static void main(String args[]){DrawNoCanvas dnc=new DrawNoCanvas();}}。