java学习总结(事件处理)

本文介绍了一款基于Java的简易画板程序设计方法,重点讲解了如何利用接口、抽象类和内部类简化事件处理,以及如何使用Graphics对象绘制图形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  学了事件处理后,我学习了做一个简单的画板程序,该画板简单到只能选择颜色,画直线、矩形、圆形和填充圆。这个程序中我用到了接口,抽象类,使用内部类简化事件处理方式。
1.类实现接口必须重写接口中所有的方法
2.在内部类中可以new 接口名
 如:

btnColor.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent e) {
    color = javax.swing.JColorChooser.showDialog(null, "颜色选择器",
      color);
   }
  });

 
 3.对于鼠标的事件监听,使用java.awt.event.MouseAdapter抽象类比鼠标事件监听器接口要好,继承这个抽象类的子类只需要重写我们所需要的方法,避免代码的冗余。
4. java.awt.Graphics不能实例化对象,javax.swing.JFrame类提供了一个getGraphics()方法可以得到java.awt.Graphics对象,Graphics可以理解为"画布"对象,通过调用Graphics对象不同的draw方法并传入鼠标的坐标参数,就可以在JFrame界面上画出相应的图形。

注意:用JFrame对象取得画布对象一定要在界面setVisible(设置可见性)后取得。
以下是只可以画直线的简单程序:

import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseWheelListener;
public class SampleDraw {

 private int x1,y1,x2,y2;//记录鼠标两次点击的坐标
 private java.awt.Graphics g;//从界面对象上得到的画布对象
 public static void main(String[] args){
  SampleDraw sd = new SampleDraw();
  sd.showUI();
 }
 //显示主界面
 public void showUI(){
  javax.swing.JFrame jf = new javax.swing.JFrame();
  jf.setTitle("画板");
  jf.setSize(500,300);
  jf.setResizable(false);
  //加上自定义的鼠标事件监听器:鼠标释放是调用方法
  jf.addMouseListener(new java.awt.event.MouseAdapter(){
   //只需要重写需要的方法即可,因为父类不是接口
   //鼠标按下时点的坐标
   public void mousePressed(MouseEvent e){
    //记录第一次点击的x,y,通过事件对象e得到
    x1 = e.getX();
    y1 = e.getY();
   }
   public void mouseReleased(MouseEvent e){
    //记录第二次点击的x,y
    x2 = e.getX();
    y2 = e.getY();
    //现在,两次点的坐标都得到了,在画布上画线,调用画布对象的方法
    g.drawLine(x1,y1,x2,y2);
   }
  });
  jf.setDefaultCloseOperation(3);//关闭时退出程序
  jf.setVisible(true);
  //用JFrame对象取得画布对象时,一定要在界面setVisible(设置可见性)后取得。
  g = jf.getGraphics();
 }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值