JavaFX |用户名和密码检查无法正常工作

标签 java events javafx fxml

我正在使用 JavaFX 并创建了一个登录表单。所以我想测试一下不可避免的,插入用户名和密码来检查是否正确。问题是它没有按预期运行。无论如何,它总是会转到其他 body 。代码如下:

public class Controller {
    @FXML PasswordField pass;
    @FXML TextField name;
    @FXML javafx.scene.control.Button login;
    @FXML Hyperlink signup;
    @FXML Label errormessage;

    @FXML private void buttonPressed() {
        checkUser();
    }

    @FXML private void ifEnterIsPressed(KeyEvent k) {
        if (k.getCode() == KeyCode.ENTER)
            checkUser();
    }

    @FXML private void checkUser() {
        System.out.println(name.getCharacters());
        System.out.println(pass.getCharacters());
        if (name.getCharacters().equals("Marios") && pass.getCharacters().equals("19981998")) {
            errormessage.setVisible(false);
            System.out.println("Access granted!");
        }
        else {
            errormessage.setText("Wrong username or password");
            System.out.println("Access denied");
        }
    }
}

我不知道我是否遗漏了一些完全明显的东西或者什么......

提前致谢!

最佳答案

问题在于您对 TextField.getCharacters() 的使用方法。这与调用 TextField.getText() 不同。 。目前,对于 Java 10,方法 TextField.getCharacters()返回 StringBuilder (这是 CharSequence )而不是 String 。这是可以预料的,因为 Javadoc 指出:

Returns the character sequence backing the text field's content.

“内容”很可能意味着支持 TextInputControl.Content 以及TextField的源代码似乎证实了这一点。然而,您想要比较的是 String包含在textProperty()TextField的.

显然,我不知道这一点(尽管这是可以理解的),一个 StringBuilder 不等于 String即使它们包含相同的字符。或者,将其放入代码中:

StringBuilder sb = new StringBuilder("Hello, World!");
String s = "Hello, World!";
sb.equals(s); // FALSE
sb.toString().equals(s); // TRUE

因此,要直接回答,请更改 name.getCharacters()pass.getCharacters()name.getText()pass.getText() ,分别。

关于JavaFX |用户名和密码检查无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50897466/

相关文章:

javascript - HTML 的 'onclick' 是否适用于移动设备?

javascript - Node 事件发射器

选择元素选择的 Javascript 事件

java - 我使用 LIKE 语句并得到 java.sql.SQLException : After end of result set in mysql

java - 如何在鼠标拖动时在舞台上设置事件?

java - JTable 单元格中的按钮 : Keep Caption constant while storing data in the cell

java - 查找可能的 ServerSocket 列表

在 JDBC 中获取游标时出现 java.lang.NullPointerException

javafx - 如何禁用 Press ESC to exit full screen-mode message in javafx

java - Java 中的数组列表和列表