2012-11-20 76 views
0

因爲我是一個真正的noob編程,我試圖解決這個代碼,我得到一個部分輸出。這個想法是打印在小程序上鍵入的字符,如果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){ 
    } 

} 

回答

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找到更好的性能。

+0

非常感謝。這清理了 –

+0

@AdithyaIyer很高興我能幫忙。 –

相關問題