Java进阶(GUI编程_事件机制②)

来源:互联网 发布:app分发平台系统源码 编辑:程序博客网 时间:2024/05/03 19:30
  Graphics类:
  每个Component都有一个paint(Graphics g)用于实现绘图的目的,每次窗口重绘该Component时都会自动调用paint方法。
  至于Graphics类中提供了多少绘图方法,具体查API就可以了。

  例题:
  
  piant方法是从父类继承下来的,当窗口重绘时,就会自动调用这个方法,它的参数可以看成一个画笔,是系统给的一个画笔,给你画笔让你自己画。
  paint是系统自己调用的,不用我们显示进行调用。
  paint方法里的第一句和倒数第一句的代码,是为了养成编程的良好习惯,当系统将画笔传递给你的时候,但是它已经使用了,上面存的颜色是系统调用时存的,所以我们要先暂存起来,最后再换回去。
  而setColor是设置画笔的颜色,fillOval和drawOval是Grphics类的方法,绘画实心圆和空心圆。


  鼠标事件实例:
  
import java.awt.*;import java.awt.event.*;import java.util.*;public class AddProject {public static void main(String[] args){new PaintTest("MouseTest!");}}class PaintTest extends Frame{ArrayList points = null;//用来存储这些“点”PaintTest(String Frame_Name)//构造方法{super(Frame_Name);points = new ArrayList();setBounds(200,200,400,400);setVisible(true);this.addMouseListener(new Monitor());//添加一个鼠标事件监听器}public void paint(Graphics g){Iterator i = points.iterator();//容器迭代器while(i.hasNext()){Point p = (Point)i.next();//每拿到容器内的一个元素就向下转型为Point类型g.setColor(Color.red);//设置画笔的颜色g.fillOval(p.x,p.y,10,10);//画出这个圆,x、y点,大小为10,10}}public void addPoint(Point p){points.add(p);//鼠标每单击一下就添加一个容器元素,类型为Point}class Monitor extends MouseAdapter//MouseAdpter实现了MouseListener接口{public void mousePressed(MouseEvent e){PaintTest p = (PaintTest)e.getSource();//取出封装的信息p.addPoint(new Point(e.getX(),e.getY()));//取鼠标当前x,y的值p.repaint();//强制重绘画面}}}



  键盘事件实例:
  
import java.awt.*;import java.awt.event.*;public class KeyTest{public static void main(String[] args){new KeyTestFrame("键盘事件实例");}}class KeyTestFrame extends Frame{KeyTestFrame(String Frame_name){super(Frame_name);TextField t = new TextField(100);setBounds(200,200,400,400);add(t);setVisible(true);t.addKeyListener(new KeyMointor());}class KeyMointor extends KeyAdapter{public void keyPressed(KeyEvent e){int Key = e.getKeyCode();if(Key == KeyEvent.VK_UP){System.out.println("UP");}}}}


  Windows事件实例: 
package SmallProject;import java.awt.*;import java.awt.event.*;public class WindowsCloseTest{public static void main(String[] args) {new WindowFrame("Windows Close Test!");}}class WindowFrame extends Frame{WindowFrame(String Frame_name){super(Frame_name);setBounds(200,200,400,400);setVisible(true);addWindowListener(new WindowMointor());}class WindowMointor extends WindowAdapter{public void windowClosing(WindowEvent e){setVisible(false);System.exit(-1);}}}


0 0
原创粉丝点击