2014-07-25 142 views
-2

这是我制作的一个计算器的字母代码,我希望它是当我按下“1”时,计算器在我的数组中输入1,但它甚至不会触发keyPressed和那个。KeyListener不会触发

package ws1; 
import java.applet.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.ArrayList; 

public class ws41 extends Applet implements ActionListener, KeyListener{ 
    Button equals,zero,one,two,three,four,five,six,seven,eight,nine,divide,times,plus,minus,u2s,s2u,period; 
    Label show; 
    double total; 
    double dot; 
    double left=0; 
    double right=0; 
    String tots = ""; 
    String sign = ""; 
    ArrayList<Integer> Calc = new ArrayList<Integer>(); 

    public void init(){ 
     setSize(30,200); 
     show = new Label(""); 
     period = new Button(" . "); 
     u2s = new Button(" Usd to Sek"); 
     s2u = new Button("Sek to Usd"); 
     zero = new Button(" 0 "); 
     one = new Button(" 1 "); 
     two = new Button(" 2 "); 
     three = new Button(" 3 "); 
     four = new Button(" 4 "); 
     five = new Button(" 5 "); 
     six = new Button(" 6 "); 
     seven = new Button(" 7 "); 
     eight = new Button(" 8 "); 
     nine = new Button(" 9 "); 
     plus = new Button(" + "); 
     minus = new Button(" - "); 
     times = new Button(" * "); 
     divide = new Button("/"); 
     equals = new Button(" = "); 
     this.addKeyListener(this); 
     zero.addActionListener (this); 
     one.addActionListener (this); 
     two.addActionListener (this); 
     three.addActionListener (this); 
     four.addActionListener (this); 
     five.addActionListener (this); 
     six.addActionListener (this); 
     seven.addActionListener (this); 
     eight.addActionListener (this); 
     nine.addActionListener (this); 
     plus.addActionListener (this); 
     times.addActionListener (this); 
     minus.addActionListener (this); 
     times.addActionListener (this); 
     divide.addActionListener (this); 
     equals.addActionListener (this); 
     u2s.addActionListener (this); 
     s2u.addActionListener (this); 
     period.addActionListener(this); 
     //add(show); 
     add(one); 
     add(two); 
     add(three); 
     add(four); 
     add(five); 
     add(six); 
     add(seven); 
     add(eight); 
     add(nine); 
     add(zero); 
     add(period); 
     add(plus); 
     add(minus); 
     add(times); 
     add(divide); 
     add(equals); 
     add(u2s); 
     add(s2u); 
    } 
    public void keyPressed(KeyEvent ke) { 
     Calc.add(ke.getKeyCode()); 
    } 


    public void keyReleased(KeyEvent ke){ 
    } 

    public void keyTyped(KeyEvent ke) { 
    } 
+0

考虑发布的[之间共享MCVE](http://stackoverflow.com/help/mcve)。你已经发布了很多代码来解决一个非常小的问题。 – csmckelvey

+0

“当我按”1“计算器输入1”键盘上的1或计算器上的1? – TNT

+0

键盘上的一个 对不起,缩短了它 – Chris

回答

0

KeyListener是焦点背景。也就是说,当它注册的组件具有焦点(并且是可以聚焦的)时,它将仅响应于关键事件。

AWT是15岁以上的过时并且被替换为Swing。考虑使用基于Swing的组件代替

您不应该在按钮上使用KeyListener,而应该使用ActionListener

更多细节

事实上见How to use buttonsHow to write ActionListeners,你可以大大地使用Action APIkey bindings简化这个,因为Action将按钮和键绑定

+0

但他没有使用纽扣是他吗? ''键盘上的一个对不起,缩短了它 - Chris'' – Zach

+0

@zach他们是,他们希望当他们按下键盘上相应的键时,相关的按钮将被触发,他们将KeyListensers添加到按钮 – MadProgrammer

+0

@Takendarkk他们可能是一个团队......? – MadProgrammer