JavaFX如何清除消息

时间:2014-08-10 03:39:56

标签: java user-interface javafx-2 message

下面的代码是一个片段,如果密码不正确,应该打印一条消息,并在密码不正确时打印另一条消息。

pwBox.setOnAction(new EventHandler<ActionEvent>() {

            public void handle(ActionEvent e) {
                Label message = new Label();
                grid.add(message, 1, 7);

                if (!pwBox.getText().equals("T2f$Ay!")) {
                    message.setText("Your password is incorrect!");
                    message.setTextFill(Color.rgb(210, 39, 30)); //Red
                } else {
                    message.setText("Your password has been confirmed");
                    message.setTextFill(Color.rgb(21, 117, 84)); //Green
                }
                pwBox.clear();
            }

        });

当我故意输入错误的密码时,代码会打印红色,如果我再次执行此操作,颜色会实际加剧,如果我之后输入正确的密码,则只会写入上一条消息。有没有办法从网格中删除消息?

2 个答案:

答案 0 :(得分:2)

每次用户按下&#34;输入&#34>时,都会调用handle()方法。在pwBox。这意味着每次发生这种情况时,您都会创建一个全新的Label并将其添加到网格中的同一个单元格中,将其放在之前放置的任何内容之上。

相反,创建Label一次,并在事件处理程序中更新其文本:

        final Label message = new Label();
        grid.add(message, 1, 7);
        pwBox.setOnAction(new EventHandler<ActionEvent>() {

            public void handle(ActionEvent e) {

                if (!pwBox.getText().equals("T2f$Ay!")) {
                    message.setText("Your password is incorrect!");
                    message.setTextFill(Color.rgb(210, 39, 30)); //Red
                } else {
                    message.setText("Your password has been confirmed");
                    message.setTextFill(Color.rgb(21, 117, 84)); //Green
                }
                pwBox.clear();
            }

        });

答案 1 :(得分:-2)

尝试在条件流之前添加message.setText(“”),如下所示:

        pwBox.setOnAction(new EventHandler<ActionEvent>() {
        public void handle(ActionEvent e) {
            Label message = new Label();
            grid.add(message, 1, 7);
            message.setText("");

            if (!pwBox.getText().equals("T2f$Ay!")) {
                message.setText("Your password is incorrect!");
                message.setTextFill(Color.rgb(210, 39, 30)); //Red
            } else {
                message.setText("Your password has been confirmed");
                message.setTextFill(Color.rgb(21, 117, 84)); //Green
            }
            pwBox.clear();
        }

    });