从独立类返回JTextBox的空值

时间:2017-09-28 03:45:36

标签: java swing

有没有办法或者是否可以将actionListener创建为独立类? 我设法使用loginView类创建按钮监听器,它工作得很好,但我正在尝试从另一个类(LoginLogic)实现登录功能。

我遇到的问题,当我试图打印时,它什么也没有返回。

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;
}
}

提前谢谢你:)

1 个答案:

答案 0 :(得分:2)

像下面这样的匿名内部类只在另一个类中有意义,因为如果唯一使用它的类是JFrame类,那么将actionlistener放到另一个类中是什么意思。我看到的唯一目的是也许干净的代码。

如果要将actionListener实现到单独的类,您可以:

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

然后到你的JFrame类:

button.addActionListener(new ClickListener());