java实例 使用按钮或键盘使按钮位置改变

//Inner class 事件处理例一
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class Win extends JFrame
{
    JButton btn;
    Police police;

    Win()
    {
        setTitle("键盘按钮");
        setBounds(100,100,200,200);
        setLayout(new FlowLayout());

        btn = new JButton("点我或者按A");
        police = new Police();

        btn.addActionListener(police);
        btn.addKeyListener(police);
        add(btn);

        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    class Police extends KeyAdapter implements ActionListener
    {
        JButton b;
        public void actionPerformed(ActionEvent e)
        {
            b = new JButton();
            b = (JButton)e.getSource();
            b.setLocation(10 + b.getBounds().x, 10 + b.getBounds().y);
        }

        public void keyPressed(KeyEvent k)
        {
            if(k.getKeyCode() == KeyEvent.VK_A)
            {
                b = (JButton)k.getSource();
                b.setLocation(10 + b.getBounds().x, 10 + b.getBounds().y);
            }
        }
    }
}

//主类
public class test
{
    public static void main(String args[])
    {
        Win win = new Win();
    }
}

在这里插入图片描述
在这里插入图片描述

这样不管是点击按钮或者是键盘a都可以使按钮发生位移


注:
1.实例化监听器很重要,也就是police = new Police(),如果不实例化,没有办法完成响应的
2.实现监听器类的时候
①如果这个监听器需要和某些组件实现交互,我们就要在这个类里面的成员属性添加这个组件
②在函数中首先实例化这个组件,然后使用参数事件的getSource()获得交互组件,使这个交互组件强制转化为我们需要的组件,然后赋值给我们新建的组件,这样我们就和响应函数建立起了联系

也就是一句话,用getsource()函数将交互组件传进来,赋值给监听器的成员属性,然后用成员属性做相应操作

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值