2014-11-03 34 views
1

我已經使用Netbeans在線教程製作了一個簡單的計算器,它在單擊各個按鈕時工作正常,但是我希望通過允許按鍵工作來改進它。如何處理用Java編寫的計算器的按鍵?

我想要的是數字0-9的工作,+, - ,*,/並輸入爲=。

我想我知道該怎麼做,但似乎無法弄清楚。

例如,對於我的1個按鈕的代碼是:

private void btnOneActionPerformed(java.awt.event.ActionEvent evt) {          
    String btnOneText = txtDisplay.getText() + btnOne.getText(); 
    txtDisplay.setText(btnOneText); 
} 

所以對於我創建了一個按鍵事件的按鍵,但我不知道該代碼是什麼。我認爲這是這樣的:

private void jPanel1KeyPressed(java.awt.event.KeyEvent evt) {         
    //if statement to check if 1 key has been pressed, then execute rest of code 
    String btnOneText = txtDisplay.getText() + btnOne.getText(); 
    txtDisplay.setText(btnOneText); 
} 

但是,我可能完全錯誤。任何幫助?

+2

不要使用KeyListener的。相反,你應該使用Key Bindings和Actions。看看這個簡化的[示例](http://stackoverflow.com/questions/21434873/setting-up-keylisteners-using-the-mvc-in-java/21436635#21436635)。 – camickr 2014-11-03 01:52:44

+0

每當我嘗試添加導入,我得到我的包jCalculator上的錯誤,該程序將無法運行。我的意思是在哪裏添加代碼?我意識到這個評論是相當模糊的。 – DivineShine 2014-11-03 02:08:29

+0

@DivineShine:所有導入都位於同一位置的頂部。如果您在使用導入時看到問題,請顯示違規代碼和錯誤消息。 – 2014-11-03 02:13:41

回答

0

根據您的使用情況,您可以使用KeyListener或KeyBindings中的任意一種。

由於您正在設計一個簡單的計算器,KeyListener並沒有什麼壞處,因爲沒有太多控件。

同樣的演示代碼是。

public void keyPressed(KeyEvent e) { 

int keyCode = e.getKeyCode(); 
     switch(keyCode) { 

    case KeyEvent.VK_0: 
     //handle 0 press 
     break; 
    case KeyEvent.VK_1: 
     // handle 1 press 
     break; 
    case KeyEvent.VK_2: 
     // handle 2 press 
     break; 
    case KeyEvent.VK_3 : 
     // handle 3 press 
     break; 
    // 
} 
} 

你可以在這裏找到鍵碼:http://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html