2017-09-28 6 views
1

方法はありますか、またはスタンドアロンクラスとしてactionListenerを作成することは可能ですか? 私は、ボタンリスナーをloginViewクラスで作成することができますが、それは完璧に動作しますが、私が試みているのは別のクラス(LoginLogic)からログイン機能を実現することです。スタンドアロンクラスからJTextBoxの空の値を返す

私がprintlnを試みたときに直面した問題は、何も返されませんでした。

loginView.java

loginLogic lg1 = new loginbtn 
final JTextField user; 
JButton login = new JButton("test"); 

user = new JTextField; 
.. 
.. 
.. 
panel.add(lg1.loginBtn(user.getText()), cs) 

// ---- This will work but i am trying to load the function from loginLogic---- 
// login.addActionListener(new ActionListener(){ 
// @Override 
// public void actionPerformed(ActionEvent arg0){ 
// String userText = user.getText(); 
// System.out.println(username); 
// }); 

} 

loginLogic.java

.. 
public class loginLogic{ 
public Component loginbtn(String username){ 
JButton login = new JButton("submit"); 
login.addActionListener(new ActionListener(){ 
@Override 
public void actionPerformed(ActionEvent arg0){ 
System.out.println(username); 
}); 
return login; 
} 
} 

は、事前にありがとう:)以下のような

+0

1)、[MCVE]を投稿したり、 [短い、自己完結型、正しい例](http://www.sscce.org/)。 2)インデントするコード行とブロックの論理的で一貫した形式を使用します。インデントは、コードの流れをより簡単にするためのものです。 3)** Stringbテキストを 'loginbtn'メソッドに提供するだけでなく、テキストフィールドへの参照を渡すこともできます** 4)一般的なJava命名法(命名規則 - 例えば' EachWordUpperCaseClass'、 'firstWordLowerCaseMethod ) '、' firstWordLowerCaseAttribute'が 'UPPER_CASE_CONSTANT'でなければ)それを一貫して使用してください。 –

答えて

2

匿名内部クラスは別のクラス内部の意味を持っていますなぜなら、唯一のcならば、別のクラスにactionlistenerを持たせることですそれを使用するlassはJFrameクラスです。私が見る唯一の目的は、かもしれません。クリーンコードです。

あなたができる別のクラスにActionListenerを実装する場合:

public class ClickListener implements ActionListener { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     System.out.println("Clicked!"); 
    } 
} 

してからのJFrameクラスへ:早いほど良いヘルプについて

button.addActionListener(new ClickListener()); 
関連する問題