2016-03-21 13 views
0

Ich versuche, es einfacher zu machen, Tasten zu machen, indem Sie eine Methode, aber wenn ich die Methode verwenden, um eine Schaltfläche zu machen passiert nichts, wenn ich die Taste drücken, obwohl ich einen Listener für die Schaltfläche habenJava AddActionListener funktioniert nicht

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

Ich benutze AssignButton (Check, "Wörter"); um den Knopf

jedes Mal, wenn ich die Taste drücken setzt es Code auf 2, weiß jemand, was ich falsch mache?

Edit:

vollständige Code

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

Stellen Sie ein ausführbares Beispiel bereit. Denken Sie auch daran, dass Java aufgrund der Art und Weise, wie Parameter übergeben werden, einen Wert für den übergebenen Wert hat. Stattdessen sollten Sie die neue Instanz von JButton zurückgeben und stattdessen Ihrem Wert zuweisen. – MadProgrammer

+0

@MadProgrammer, Ich glaube, du hast in diesem Kommentar ein wichtiges "Nein" vergessen. – ChiefTwoPencils

+1

@ChiefTwoPencils Fette Finger, kleines Telefon: P – MadProgrammer

Antwort

0

Das Problem ist, dass Sie Check das Verfahren (wie wtf) passieren, aber dann sofort setzen Sie sich auf eine neue Instanz; Diese Instanz ist nichtCheck. Es wird hinzugefügt, aber Sie können es nicht mit Check bekommen.

Sie wahrscheinlich tun wollen ...

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

und dann Check = getButton(someText); von add(Check); gefolgt.

Wenn Sie nicht wirklich Check herumliegen brauchen, können Sie es auch einfach direkt mit add(getButton(someText)); hinzufügen.

0

Ich bin nicht sicher, was für Sie bedeutet event.getSource() == Check aber das ist der Schlüssel, müssen Sie den richtigen Vergleich in Ihrem Fall überprüfen. So etwas wie zum Beispiel:

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