绑定监听事件的按钮运行结果错误原因及其解决方案

一、前言

在前面讲述有关监听事件的知识点时,为了能够直观看到其成效,我们用三个实例来演示了给按钮和界面绑定监听以后的效果,但是在实际自己写的过程中就遇到了一写小小的问题,对应也就是知识点的欠缺,这里我们总结一下

二、窗口大小变为按钮大小

1.错误效果展示

在这里插入图片描述

2.原因分析

既然是窗口大小和按钮大小相同,那么一定是设置宽高的代码出现了问题,由于我们要使得代码冗余度降低,所以把按钮对象建在类中,所以在本类中的 this 关键字代表的就是JFrame窗体的大小,而不是按钮的大小

3.错误代码

import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class test extends JFrame implements MouseListener {

    //创建按钮对象
    JButton jtb1 = new JButton("点击我有惊喜");
    
	public test(){
	
		//按钮设置宽高
        this.setBounds(0,0,200,50);

        //绑定鼠标事件
        jtb1.addMouseListener(this);

        //将按钮放在界面中
        this.getContentPane().add(jtb1);
	}

}

4.解决方案

解决方案也很简单,只需要把this.setBounds(0,0,200,50);改为jtb1.setBounds(0,0,200,50);即可

5.正确代码

import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class test extends JFrame implements MouseListener {

    //创建按钮对象
    JButton jtb1 = new JButton("点击我有惊喜");
    
	public test(){
	
		//按钮设置宽高
        jtb1.setBounds(0,0,200,50);

        //绑定鼠标事件
        jtb1.addMouseListener(this);

        //将按钮放在界面中
        this.getContentPane().add(jtb1);
	}

}

6.知识点

this关键字的用处是调用成员变量中的值,而不是通过就近原则调用方法里的值;这个错误所对应的知识点是【构造方法及this关键字

三、键盘监听运行结果不同

1.错误效果展示

在这里插入图片描述

2.原因分析

虽然这个错误界面和上面很像,但是原因不同,在【Java中的键盘监听机制(含实例)】其实就有提到过,对于键盘监听,我们要给整个页面添加监听事件,而不是新建一个按钮,所以如果偷懒复制黏贴上面的代码就会出错

3.错误代码

import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class test extends JFrame implements MouseListener {

    //创建按钮对象
    JButton jtb1 = new JButton("点击我有惊喜");
    
	public test(){
	
		//按钮设置宽高
        this.setBounds(0,0,200,50);

        //绑定键盘监听事件
        this.addKeyListener(this);

        //设置界面可视化
        this.setVisible(true);
	}

}

4.解决方案

既然都没有创建按钮了,setBounds这行的代码也就可以删除了,只要删除这行代码,程序就可以运行出我们想要的结果了

5.正确代码

import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class test extends JFrame implements MouseListener {

    //创建按钮对象
    JButton jtb1 = new JButton("点击我有惊喜");
    
	public test(){

        //绑定键盘监听事件
        this.addKeyListener(this);

        //设置界面可视化
        this.setVisible(true);
	}

}

四、结语

这里遇到的问题都是博主在自己尝试独立写出这部分代码时碰到的一些问题,如果别的小伙伴也在写拼图小游戏的过程中遇到问题,或者有疑惑的话,欢迎在评论区留言,如果文章中有错误也可以指出,我也会及时改进

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alita11101_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值