我在调用getText()对象上的JTextField方法时遇到了问题。首先,我调用了panel.getComponent(2),因为我添加到面板中的第二个组件是username文本字段,我通过运行我的应用程序来确认这个字段,并且"username“正在控制台中打印。这就是我迷路的地方,因为我知道它返回了用户名文本组件,所以当我试图调用getText()时,为什么会有一个错误。有人知道这是为什么吗?
这是我的代码:
// 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");
}
}发布于 2022-03-11 21:33:10
--当我试图调用getText()时,会得到一个错误
String username = panel.getComponent(2).getText();getComponent()方法返回一个没有getText()方法的组件。
您需要将对象强制转换为JTextField:
Component component= panel.getComponent(2); // or 1 if it really is the second component
JTextField textField = (JTextField)component;
String username = textField.getText();另外:
if (action == "login") 不要使用"==“进行字符串比较。
Insetead使用equals(...)方法:
if (action.equals("login")) https://stackoverflow.com/questions/71444754
复制相似问题