初学者Java程序--无法按键工作
我从Java开始,我遇到了一个问题。当人们点击java小程序上的“a”时,我希望它画一个黄色的矩形,如果他们按下其他任何按钮,它会画一个黑色的矩形,但什么也没有发生初学者Java程序--无法按键工作,java,applet,awt,keylistener,Java,Applet,Awt,Keylistener,我从Java开始,我遇到了一个问题。当人们点击java小程序上的“a”时,我希望它画一个黄色的矩形,如果他们按下其他任何按钮,它会画一个黑色的矩形,但什么也没有发生 import java.awt.*; import java.applet.*; import javax.swing.*; import java.awt.event.*; import java.awt.event.KeyListener; import java.awt.event.KeyEvent; public
import java.awt.*;
import java.applet.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
public class guitarGame extends Applet implements ActionListener, KeyListener{
Timer timer = new Timer (1000, this);
String s = "";
char a;
int selection;
public void keyReleased(KeyEvent ae){}
public void keyPressed(KeyEvent ae){}
public void keyTyped(KeyEvent ae){
a = ae.getKeyChar();
}
public void init(){
addKeyListener(this);
}
public void actionPerformed (ActionEvent ae)
{
if (a == a)
{
selection = 1;
}
else{
selection = 2;
}
}
public void paint (Graphics g)
{
if (selection == 1){
g.setColor(Color.YELLOW);
g.fillRect(100,100,100,100);
}
if (selection == 2){
g.setColor(Color.YELLOW);
g.fillRect(100,100,100,100);
}
repaint();
}
}
有什么帮助吗?您没有使用
KeyListener
方法执行任何操作。您的ActionListener
将永远不会被调用,因为它尚未向任何组件注册
public void keyPressed(KeyEvent ae){
char keyChar = ae.getKeyChar();
if (keyChar == 'a' ) {
selection = 1;
} else {
selection = 2;
}
repaint();
}
一些建议:
- 不要在
内部调用paint
——这将导致后者无限循环repaint
- 使用
而不是幻数进行绘制选择枚举
- 呼叫super.paint(g)
- 考虑使用Swing,它比旧的重量级AWT有更好的性能李>