【问题标题】:How to access to the value inside a Swing JTextField/JPasswordField?如何访问 Swing JTextField/JPasswordField 中的值?
【发布时间】:2013-11-30 09:27:41
【问题描述】:

我是 Java Swing 开发的新手,遇到以下问题。

我有一个自定义的 LoginFrame,它扩展了经典的 JFrame Swing 类来创建一个登录窗口,用户可以在其中插入其用户名和密码。

在这个类里面我有这样的东西:

externalPanel.setLayout(new net.miginfocom.swing.MigLayout("fill"));    
    externalPanel.add(new JLabel("Username"), "w 50%, wrap");
    JTextField userNameTextField = new JTextField(20);    
    externalPanel.add(userNameTextField, "w 90%, wrap");    
    externalPanel.add(new JLabel("Password"), "w 50%, wrap");
    // JTextField pswdTextField = new JTextField(20);
    JPasswordField pswdTextField = new JPasswordField(20);
    externalPanel.add(pswdTextField, "w 90%, wrap");    
    JButton loginButton = new JButton("Login");
    // loginButton.setActionCommand("loginAction");
    loginButton.addActionListener(this);

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        System.out.println("Button LogIn cliccked");    
        firePropertyChange("loginResult", false, loginResult);    
    }

如您所见,当用户单击 JButton loginButton 对象时,我执行了 actionPerformed。

好的,我的问题是:如何从 actionPerformed()^^ 方法中访问插入到我的 **JTextField userNameTextFieldJPasswordField pswdTextField 中的值?

我该怎么办?

Tnx

安德烈亚

【问题讨论】:

  • 在方法之外声明你的字段或使它们最终并添加一个新的监听器 loginButton.addActionListener();
  • 在存储之前无法访问?

标签: java swing user-interface jtextfield jpasswordfield


【解决方案1】:

JTextField userNameTextField, JPasswordField pswdTextField, JButton loginButton 声明为globel。然后你可以得到这样的值..

@Override
public void actionPerformed(ActionEvent e) {
    if(e.getSource() == loginButton){
         String name = userNameTextField.getText();
         char[] pass = pswdTextField.getPassword();
         // your remaining operation...
    }

}

【讨论】:

  • 你的意思是我把我的变量声明为静态的吗?
  • 我有什么办法将其声明为全球性的?
  • 只要在方法外声明就行了
  • 只需在构造函数和所有其他函数之上声明,并在构造函数内部创建对象。因此您可以从类中的任何函数访问。作为上面的代码,您在构造函数或其他任何内容中声明和创建对象。所以这些对象只在范围内可见。所以你无法在 actionPerformed 方法中获得价值。
【解决方案2】:

对于 JTextField:jTextField.getText() ---> 返回字符串

对于 JPasswordField:jPasswordField.getPassword() ----> 返回 char[]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2018-11-06
    • 2011-08-10
    • 2015-06-01
    • 2019-05-07
    • 1970-01-01
    相关资源
    最近更新 更多