首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在getText对象上调用JTextField ()

无法在getText对象上调用JTextField ()
EN

Stack Overflow用户
提问于 2022-03-11 21:20:12
回答 1查看 78关注 0票数 0

我在调用getText()对象上的JTextField方法时遇到了问题。首先,我调用了panel.getComponent(2),因为我添加到面板中的第二个组件是username文本字段,我通过运行我的应用程序来确认这个字段,并且"username“正在控制台中打印。这就是我迷路的地方,因为我知道它返回了用户名文本组件,所以当我试图调用getText()时,为什么会有一个错误。有人知道这是为什么吗?

这是我的代码:

代码语言:javascript
复制
// MODIFIES: this
// EFFECTS: creates username text field
private void makeUsernameTextField() {
    JTextComponent username = new JTextField();
    username.setName("username");
    username.setBounds(width / 2 - borderThickness - userFieldW / 2,
            height / 2 - borderThickness - textFieldH / 2, textFieldW, textFieldH);
    username.setOpaque(true);
    panel.add(username);
}

@Override
public void actionPerformed(ActionEvent e) {
    String username = panel.getComponent(2).getText();
    String action = e.getActionCommand();

    if (action == "login") {
        login.signIn(username);
        System.out.println(username);
        System.out.println("succesful!");
    } else if (action == "sign up") {
        System.out.println("sign up pressed");
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-03-11 21:33:10

--当我试图调用getText()时,会得到一个错误

代码语言:javascript
复制
String username = panel.getComponent(2).getText();

getComponent()方法返回一个没有getText()方法的组件。

您需要将对象强制转换为JTextField:

代码语言:javascript
复制
Component component= panel.getComponent(2); // or 1 if it really is the second component
JTextField textField = (JTextField)component;
String username = textField.getText();

另外:

代码语言:javascript
复制
if (action == "login") 

不要使用"==“进行字符串比较。

Insetead使用equals(...)方法:

代码语言:javascript
复制
if (action.equals("login")) 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71444754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档