2013-04-21 52 views
-1

所以我有一些按鈕:
static JButton rpsls = new JButton(new ImageIcon(rpslsscaled));
其中rpslsscaled是一些圖像。所以我試着拿到按鈕actionperformed不感應按鈕點擊

public class SomeClass implements ActionListener{ 
    ... 
    static JButton rpsls = new JButton(new ImageIcon(rpslsscaled)); 
    ... 
    class SomeInnerClass implements ActionListener{ 
    ... 
     public void actionPerformed(ActionEvent e){ 
      if (e.getSource() == rpsls) { 
       JOptionPane.showMessageDialog(null,"You clicked rpsls!"); 
      } 
     } 
    } 
    ... 
    public void actionPerformed(ActionEvent e){ 
    ... 
    } 
} 

當我按下按鈕rpsls時,什麼也沒有發生。它不打印「您點擊rpsls!」。 這是因爲2 actionPerformed方法?

回答

1

問題:

  • 你在哪裏你的ActionListener添加到您的JButton?
  • 你爲什麼使用靜態變量?沒有必要,實際上不是有強烈的論據來做到這一點。

解決方案:

  • 您的ActionListener添加到您的JButton,如果你想在按鈕通過在JButton的實例調用addActionListener(...)迴應。
  • 擺脫所有不必要的靜態修飾符。
1

你錯過設定監聽按鈕:

SomeInnerClass instance = new SomeInnerClass(); 
rpsls.adddActionListener(instance);//Using the inner class 

rpsls.adddActionListener(this);//for the main Class 
1

在外部類的按鈕,您可能沒有添加一個ActionListener。 這樣做:

rpsls.adddActionListener(new SomeInnerClass()); 
1

會在您的按鈕一的actionPerformed當您單擊和U可以定義你actionPerfomed任何其他方法或作爲內你有他們的

+0

這將inturn捕捉事件E關於''「對不起?」SORRY在做這件事時沒有注意,沒有更多的答案請!謝謝! :) *感謝您的幫助,雖然!*「您是否讀過它?」:@ Minecrafterguy64:你是否試圖讓人們失望,誰試圖幫助你?如果是這樣,你正在做一個很棒的工作。 – 2013-04-21 03:26:48