2016-03-21 20 views
0

メソッドを作成してボタンを作成するのが簡単になっていますが、メソッドを使用してボタンを作成すると、ボタンのリスナーを持っていても何も起こりません。java addActionListenerが機能しない

public void assignButton(Button wtf,String text) //program to assign buttons easily 
{ 
    wtf = new Button(text); 
    add(wtf); 
    wtf.addActionListener(this); 
} 

私はassignButton(Check、 "words")を使用します。ボタン

public void actionPerformed(ActionEvent event) //checks if button has been pressed 
{ 

    if(event.getSource() == Check) 
    { 
     code ++; 
    } 
    else 
    { 
     code = 2; 
    } 
    repaint(); 

私はそれが2にコードを設定し、ボタンを押すごとに時間を作るために、誰もが私が間違っているのか知っていますか?

編集:

完全なコード

import java.awt.*; 
import java.applet.*; 
import java.awt.event.*; 

public class PressSafeTemp extends Applet implements ActionListener 
{ 
Button clear,Check; 
int code = 0; 
public void init() //assigns buttons 
{ 
    clear = new Button("C"); 
    add(clear); 
    clear.addActionListener(this); 
    assignButton(Check,"words"); 
} 

public void paint(Graphics g) 
{ 
    g.drawString(""+code,10,10); 
} 

public void assignButton(Button wtf,String text) //program to assign buttons easily 
{ 
    wtf = new Button(text); 
    add(wtf); 
    wtf.addActionListener(this); 
} 

public void actionPerformed(ActionEvent event) //checks if button has been pressed 
{ 

    if(event.getSource() == Check) 
    { 
     code ++; 
    } 
    else if(event.getSource() == clear) 
    { 
     code = 0; 
    } 
    else 
    { 
     code = 2; 
    } 
    repaint(); 
} 
} 
+1

実行可能な例を提供することを検討してください。また、Javaがパラメータを渡す方法のために、パラメータに値を代入しようとすると、JButtonの新しいインスタンスが返され、代わりに値に代入されるはずです – MadProgrammer

+0

@MadProgrammer、私はあなたがそのコメントに重要な "いいえ"を忘れたと思います。 – ChiefTwoPencils

+1

@ChiefTwoPencilsファットフィンガー、小型電話機:P – MadProgrammer

答えて

0

問題は、あなたが(wtfとして)メソッドにCheckを渡すが、その後すぐに新しいインスタンスに設定しています。このインスタンスはではなく、Checkです。それは追加されますが、Checkでそれを得ることはできません。

おそらく...

Button getButton(String text) { 
    Button button = new Button(text); 
    button.addActionListener(this); 
    return button; 
} 

、その後add(Check);続いCheck = getButton(someText);をしたいです。

実際にCheckを配置する必要がない場合は、add(getButton(someText));で直接追加することもできます。

0

私はあなたのために何を意味するのかevent.getSource() == Checkわからないんだけど、それがキーである、あなたはあなたのケースで正しい比較をチェックする必要があります。例えばような何か:

event.getSource().class.equals(JCheckBox.class)