2016-05-18 49 views
0

我想按下鍵1時彈出一個窗口,按下鍵2時彈出一個單獨的窗口。如何使用按鍵偵聽器調用類?

public void keyPressed(KeyEvent e) 
    { 

      if(e.getKeyCode() == KeyEvent.VK_1) 
     { 
      TicTacToeDriver tic = new TicTacToeDriver(); 
      PointCounter(); 
     } 

     else if(e.getKeyCode() == KeyEvent.VK_2) 
     { 
      HangmanDriver hang = new HangmanDriver(); 
      PointCounter(); 
     } 
    } 

    public void keyReleased(KeyEvent e) 
    { 
     //do nothing 
    } 

    public void keyTyped(KeyEvent e) 
    { 
     //do nothing 
    } 

tic tac toe和hangman遊戲是由兩個獨立的人創建的,程序員創建了自己的驅動程序。

+1

什麼問題? – UDKOX

+0

e.getKeyChar()=='1'和e.getKeyChar()=='2'?那是你要的嗎? –

+0

當我運行程序並按下1時,不會出現井字遊戲,但計數器會。我如何讓tic tac toe遊戲出現? –

回答

0

解決方案:

我假設程序員熟悉Java面向對象編程...

因此,您只能將創建的遊戲之一的新對象。

Hangman h = new Hangman(); 
or 
Tick h = new Tick(); 
Tick.start() //depending on their code. 

如果你正在運行一個JFrame ... 你既然你提到他們有司機我認爲他們使用的,而不是構造的主要方法,即使代碼,你需要

(insert object name).setVisible(true); 

提供了創建類的對象。

因此,當單擊按鈕或按下按鍵時。只需調用驅動程序類的主要方法即可。

hangman.main(null); //this is a terrible way to do it btw. 

我還推薦使用KeyBindings API代替鍵盤記錄器,因爲keybindings不需要重點......這也可能是問題。

另一個問題是..

this.addKeyListener(本);

您必須將keylistener添加到組件中。 但是,這是您使用keylistener時出現問題的地方。您添加KeyListener的JComponent可能沒有焦點。因此,該動作不會觸發,直到組件具有焦點並觸發動作。

相關問題