我正在获得以下代码的部分输出



因为我是一个真正的编程菜鸟,我试图制定这段代码,我得到了部分输出。这个想法是打印在小程序上键入的字符,如果按下 alt 或 shift 键,则必须显示在状态栏中。问题是小程序上没有响应,但是按 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){
    }
}   

还没有测试过自己,但这个答案可能会有所帮助: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 类有更好的性能。

相关内容

  • 没有找到相关文章

最新更新