加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – MouseListener / KeyListener不工作(JPanel)

发布时间:2020-12-15 05:10:16 所属栏目:Java 来源:网络整理
导读:我正在做一个涉及JPanel中的鼠标和关键监听器的小项目.不幸的是,当我使用鼠标/键盘时,没有一个方法被调用.之前我曾使用过JPanels / JFrame / JApplet和JComponents.代码段如下所示: import java.awt.*;import java.awt.event.*;import javax.swing.*;import
我正在做一个涉及JPanel中的鼠标和关键监听器的小项目.不幸的是,当我使用鼠标/键盘时,没有一个方法被调用.之前我曾使用过JPanels / JFrame / JApplet和JComponents.代码段如下所示:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.File;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.util.Scanner;

public class Hello extends JPanel implements KeyListener,MouseListener{
    JPanel panel = new JPanel();
    JFrame frame = new JFrame();
    public Hello(){
        addKeyListener(this);
        addMouseListener(this);
    }
    public static void main(String [] args){
        Hello play = new Hello();
        play.setPanel();
    }
    public void setPanel(){
        panel.setLayout(null);
        frame.add(panel);
        frame.setLayout(null);
        panel.setBounds(0,100,100);
        frame.setVisible(true);
        panel.setVisible(true);
        panel.setFocusable(true);
        frame.setSize(100,100);
        frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
    }
    public void keyTyped(KeyEvent evt){
        System.out.println("keytyped");
    }
    public void keyPressed(KeyEvent evt){
        System.out.print("keypressed");
    }
    public void keyReleased(KeyEvent evt){
        System.out.println("keyreleased");
    }
    public void mousePressed(MouseEvent evt){
        System.out.println("mousepressed");
    }
    public void mouseReleased(MouseEvent evt){
        System.out.println("mousereleased");
    }
    public void mouseClicked(MouseEvent evt){
        System.out.println("mouseclicked");
    }
    public void mouseEntered(MouseEvent evt){
        System.out.println("mousenentered");
    }
    public void mouseExited(MouseEvent evt){
        System.out.println("mouseexited");
    }
}

关闭主题:我一直收到错误
您的帖子似乎包含未正确格式化为代码的代码.请使用代码工具栏按钮或CTRL K键盘快捷键将所有代码缩进4个空格.有关更多编辑帮助,请单击[?]工具栏图标.
我不知道如何解决它.有时我把所有东西都放在代码中但它仍然不会提交.

解决方法

看看 Java KeyListener for JFrame is being unresponsive?.

您需要为要侦听的每个JComponent注册KeyListener和MouseListener:

public Hello() {
    addKeyListener(this);
    addMouseListener(this);
    panel.addKeyListener(this);
    panel.addMouseListener(this);
    frame.addKeyListener(this);
    frame.addMouseListener(this);
}

编辑:
键和鼠标事件仅从当时具有焦点的JComponent触发.因此,似乎一致认为KeyBindings可能对KeyListeners有利.然而,这两者都有它们的应用,所以这里没有硬性规定.阅读’How to Write a Key Listener‘和’How to Write a Key Binding‘,你就会明白这一点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读