2016-03-21 52 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

的問題是你傳遞Check的方法(如wtf),但隨後立即將其設置爲一個新的實例;這個實例是而不是Check。它確實被添加了,但是你不能通過Check得到它。

你想幹什麼?

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

,然後Check = getButton(someText);其次add(Check);

如果你實際上並不需要Check鋪設,你也可以直接將它添加到add(getButton(someText));

0

我不知道什麼對你意味着event.getSource() == Check,但是這是關鍵,你需要檢查你的情況正確的比較。喜歡的東西,例如:

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