由于我是编程的真正的菜鸟,我试图找出这个代码,我得到一个部分输出。想法是打印在小程序上键入的字符,如果按下alt或shift键,它必须显示在状态栏中。问题是applet没有响应,但按下alt或shift键,我在状态栏上得到了相应的响应。这是代码:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
/* <applet code="MyKeyApplet.class"
width = "400"
height = "400">
</applet>*/
public class MyKeyApplet extends Applet implements KeyListener{
char ch;
String str=" ";
public void init(){
this.addKeyListener(this);
requestFocus();
}
public void keyPressed(KeyEvent k){
int x = k.getKeyCode();
if(x==KeyEvent.VK_SHIFT)
showStatus("You pressed Shift Key");
else if (x==KeyEvent.VK_ALT)
showStatus("You pressed Alt Key");
}
public void paint(Graphics g){
g.drawString(str,40,40);
}
public void keyTyped(KeyEvent k){
ch=k.getKeyChar();
str="You Pressed" + ch;
repaint();
}
public void keyReleased(KeyEvent k){
}
}
答案 0 :(得分:0)
没有测试过自己,但这个答案可能会有所帮助:https://stackoverflow.com/a/12483507/877472
从我在你的代码中可以看出,你只是在检查修改键按下(ctrl,alt,shift等),但是你没有处理其他键的任何情况。同样,我没有对此进行测试,但您可能需要修改代码,以便您有两个单独的处理操作:一个用于检查是否按下修改键,然后另一个用于处理任何不是修改器的按键操作。像这样:
public void keyPressed(KeyEvent k){
int x = k.getKeyCode();
if(x==KeyEvent.VK_SHIFT)
showStatus("You pressed Shift Key");
else if (x==KeyEvent.VK_ALT)
showStatus("You pressed Alt Key");
else
str += k.getKeyChar(); // Add the pressed key to the string.
}
顺便说一句,虽然我并不是100%清楚你的程序应该做什么,但是如果你打算不断构建一个字符串,你可能会发现使用StringBuffer class可以获得更好的性能。