问题描述
我是 Java 新手,正在尝试通过制作一个简单的应用程序来学习 GUI 基础知识。
我的应用程序只是一个简单的按钮,单击时将其名称更改为单击次数.
我希望能够在用户按下“r”键时重置计数器/按钮名称,但由于某种原因,它只能在单击按钮之前起作用。
计数器超过零后,不再检测到按键。
我已经尝试了所有可以在互联网上找到的东西,包括:
我无法弄清楚发生了什么。如果有人可以提供帮助,将不胜感激。我的代码如下。 (我不知道是哪一部分导致了问题,所以我不能让它太短,否则我可能会剪掉一些重要的东西。它只有 90 行。)
import java.awt.AWTException;
import java.awt.BorderLayout;
import javax.swing.*;
import java.awt.event.*;
public class Clicker implements ActionListener {
JMenu m1;
JMenuItem m11;
JMenuItem m22;
JButton button;
int counter = 0;
public Clicker() throws AWTException {
JFrame frame = new JFrame("Click Counter");
frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,300);
JMenuBar mb = new JMenuBar();
JMenu m1 = new JMenu("File");
mb.add(m1);
m11 = new JMenuItem("Reset");
m22= new JMenuItem("Quit");
m1.add(m11);
m1.add(m22);
button = new JButton("Click");
frame.getContentPane().add(BorderLayout.CENTER,button);
frame.getContentPane().add(BorderLayout.norTH,mb);
frame.setVisible(true);
frame.setFocusable(true);
m22.setToolTipText("⌘Q");
m11.setToolTipText("R");
button.addActionListener(this);
m11.addActionListener(this);
m22.addActionListener(this);
frame.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
//nothing
}
@Override
public void keypressed(KeyEvent e) {
int keycode = e.getKeyCode();
switch(keycode) {
case KeyEvent.VK_R:
System.out.println("R pressed");
counter = 0;
button.setText("Clicks: " + counter);
break;
}
}
@Override
public void keyreleased(KeyEvent e) {
//nothing
}
});
}
public static void main(String[] args) throws AWTException {
new Clicker();
}
public void actionPerformed(ActionEvent evt) {
if (evt.getSource()==button) {
counter++;
button.setText("Clicks: " + counter);
}
else if (evt.getSource()==m11) {
counter = 0;
button.setText("Clicks: " + counter);
}
else if (evt.getSource()==m22) {
System.exit(0);
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)