2つのメソッドのシグネチャが同じであるという問題があります。 Javaがどのメソッドを呼び出すかを判断しようとすると、2つのメソッドの違いを判断できません。
私はあなたが欲しいものを行うには、2つの方法を考えることができます。おそらく
、あなたがcancelButton.addActionListener(...)
のようなボタンにリスナーを登録しています。
loginButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent logInEvent) {
System.out.println("Button Login");
}
}
cancelButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent cancelEvent) {
System.out.println("Cancel Login");
}
}
か、コールのソースをチェック単一のactionPerformedメソッドを定義することができます:だから、あなたは、独自の匿名の内部クラスを使用して各ボタンを提供することができますどちらか時には匿名内部クラスをすることができます使用
public class TheHandler implements ActionListener {
JButton loginButton;
JButton cancelButton;
public TheHandler()
{
...
// Now, technically, this is bad form because you're leaking 'this'.
// But as long as this will only be called after this constructor finishes
// initializing, it's safe.
loginButton.addActionListener(this);
cancelButton.addActionListener(this);
...
}
...
@Override
public void actionPerformed(ActionEvent evt) {
if(evt.getSource() == loginButton)
System.out.println("Button Login");
else if(evt.getSource() == cancelButton)
System.out.println("Cancel Login");
}
}
をaddListenerコールのすぐ隣にコードが表示されているので、より明確になりますが、多くの定型文が追加されます。また、読み込みに時間がかかる非常に大きなprogectを処理している場合は、少し速くロードしてください(各匿名の内部クラスは、JVMがロードする別のものです)。
どのように実装されていますか?それはしませんか? – KyelJmD
他のクラスのボタンを登録するにはどうすればよいですか? – KyelJmD
@KyelJmD:あなたはあなたが望む任意のメソッドを 'ActionListener'コールすることができます。そのメソッドが別のクラスに存在する場合、TheHandlerはそのクラスのインスタンスへの参照を必要とします。これは、オブジェクトに対してメソッドを呼び出すことと同じではありません。 'ActionListener'定義の中でそれをやっているだけです。 – unholysampler