下面的代码是一个片段,如果密码不正确,应该打印一条消息,并在密码不正确时打印另一条消息。
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();
}
});
当我故意输入错误的密码时,代码会打印红色,如果我再次执行此操作,颜色会实际加剧,如果我之后输入正确的密码,则只会写入上一条消息。有没有办法从网格中删除消息?
答案 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();
}
});