我正在进行一个涉及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,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个空格。如需更多编辑帮助,请单击工具栏图标[?]。”我不知道该怎么修复它。有时候我把所有内容都放在代码块里,但仍无法提交。
JComponent
是当前具有focus
的组件。如何编写键盘监听器 和 如何编写键绑定 详细介绍了两者之间的差异;这些差异非常微妙,但在编写稍后可能会丢弃的代码之前掌握它们是值得的。 - Sean Connolly