2012-01-31 28 views
3

這是我創建圖形文本的內部類。我希望能夠按箭頭鍵並使其消失。我確信它以某種方式涉及到刪除方法,但我已經過了頭。這是非常新的。Java:如何通過單擊箭頭鍵來擺脫特定的JPanel?

// STARTUP TEXT 

class TextPanel extends JPanel implements KeyListener{ 

    // CONSTRUCTOR 
    public TextPanel(){ 
     addKeyListener(this); 
     setFocusable(true); 
     setFocusTraversalKeysEnabled(false); 
    } 

    // PAINT METHOD 
    public void paintComponent(Graphics g2){ 
     super.paintComponent(g2); 
     g2.setColor(Color.WHITE); 
     g2.fillRect(0, 0, this.getWidth(), this.getHeight()); 
     g2.setColor(Color.BLACK); 
     g2.setFont(new Font("TimesRoman", Font.PLAIN, 14)); 
     g2.drawString("Press an arrow key to start", this.getWidth()/4, this.getHeight()/2); 
    } 
+0

爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2012-01-31 05:44:33

回答

4

AFAIK你必須使用Key Bindings響應方向鍵然後以除去面板(我想從幀)使用面板的任setVisible(false)remove(component)幀的方法。

+0

我想,但我該怎麼做? – Jazzertron 2012-01-31 05:40:29

+0

@Jazzertron閱讀:http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html – 2012-01-31 05:44:04

+0

+1另請參見['LinePanel'](http://stackoverflow.com/a/5797965/ 230513)。 – trashgod 2012-01-31 06:18:14

2
/** Handle the key typed event */ 
    public void keyTyped(KeyEvent e) { 

    } 

    /** Handle the key-pressed event */ 
    public void keyPressed(KeyEvent e) { 

    } 

    /** Handle the key-released event */ 
    public void keyReleased(KeyEvent e) { 
    int key=e.getKeyCode(); 
     if(key==KeyEvent.VK_LEFT) 
     { 

      this.setVisible(false); 

     } 
     if(key==KeyEvent.VK_RIGHT) 
     { 

      this.setVisible(true); 

     } 

    } 
+0

+1,雖然通常使用Swing我們不使用KeyEvent,它們意味着與AWT一起使用,但是由於它是您提供的有價值的信息,所以:-)問候 – 2012-01-31 07:40:56

相關問題