在JFrame里编写一个Panel,在panel上添加KeyListener统计出敲击键盘a到z的次数,实时显示到控制台。要求JFrame的名字为自己的班级加名字。
时间: 2024-02-25 14:59:53 浏览: 174
好的,你可以按照以下步骤来完成这个任务:
1. 创建一个继承自JPanel的类,并实现KeyListener接口。在类中定义一个HashMap来统计每个字母被敲击的次数,同时在keyPressed方法中更新HashMap中对应的值。最后将HashMap中的统计结果输出到控制台。
2. 创建一个继承自JFrame的类,在构造方法中设置窗口的标题为你的班级和名字,并将上一步创建的JPanel添加到窗口中。
3. 在main方法中创建上一步创建的JFrame类的实例,并设置窗口的大小和可见性。
下面是完整的代码示例:
```java
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.HashMap;
public class MyPanel extends JPanel implements KeyListener {
private HashMap<Character, Integer> countMap;
public MyPanel() {
countMap = new HashMap<>();
for (char c = 'a'; c <= 'z'; c++) {
countMap.put(c, 0);
}
addKeyListener(this);
setFocusable(true);
}
@Override
public void keyPressed(KeyEvent e) {
char c = e.getKeyChar();
if (c >= 'a' && c <= 'z') {
int count = countMap.get(c);
countMap.put(c, count + 1);
System.out.println(c + " count: " + (count + 1));
}
}
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyReleased(KeyEvent e) {}
}
public class MyFrame extends JFrame {
public MyFrame() {
setTitle("班级名字-你的名字");
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MyPanel panel = new MyPanel();
add(panel);
}
}
public class Main {
public static void main(String[] args) {
MyFrame frame = new MyFrame();
frame.setVisible(true);
}
}
```
注意:在监听键盘事件之前,需要先调用setFocusable(true)方法来设置JPanel可获取焦点,否则无法接收到键盘事件。
阅读全文