如何在JavaFx中将actionListener添加到标签

如何在JavaFx中将actionListener添加到标签,javafx,hyperlink,label,Javafx,Hyperlink,Label,我正在尝试将ActionListener添加到一个标签中,每当用户键入错误的密码或登录时,该标签就会弹出。 这是我的登录控制器 public class LoginController implements Initializable { @FXML private Label label; @FXML private TextField LoginField; @FXML private PasswordField PasswdField; @FXML private Button LogI

我正在尝试将ActionListener添加到一个标签中,每当用户键入错误的密码或登录时,该标签就会弹出。 这是我的登录控制器

public class LoginController implements Initializable {

@FXML
private Label label;
@FXML
private TextField LoginField;
@FXML
private PasswordField PasswdField;
@FXML
private Button LogInButton;
@FXML
private Label IncorrectDataLabel;
//private String uri = "http://google.com";



@FXML
private void LogIn(ActionEvent event) throws IOException {
    if(LoginField.getText().equals("MKARK")&&PasswdField.getText().equals("KACZOR1"))
    {

        Parent parent = FXMLLoader.load(getClass().getResource("/fxmlFiles/MainScreen.fxml"));
        Scene MainScene = new Scene(parent);
        Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow();
        stage.setScene(MainScene);
        stage.show();


    }
    else
    {
        IncorrectDataLabel.setVisible(true);
        // <------------------- Here I want to bind hyperlink to a label with would open the google site, whenever user clicks it.
}




@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
}
公共类LoginController实现可初始化{
@FXML
自有品牌;
@FXML
私人TextField LoginField;
@FXML
私有密码字段PasswdField;
@FXML
私人按钮登录按钮;
@FXML
私有标签不正确数据标签;
//私有字符串uri=”http://google.com";
@FXML
私有无效登录(ActionEvent事件)引发IOException{
if(LoginField.getText().equals(“MKARK”)和&PasswdField.getText().equals(“KACZOR1”))
{
Parent Parent=fxmloader.load(getClass().getResource(“/fxmlFiles/MainScreen.fxml”);
场景主场景=新场景(父场景);
Stage Stage=(Stage)((节点)event.getSource()).getScene().getWindow();
舞台场景(主场景);
stage.show();
}
其他的
{
不正确的DataLabel.setVisible(true);

//标签不会触发操作事件。您可以使用鼠标单击事件的侦听器,例如:

@FXML
private void gotoGoogle() {
    // open url etc
}
和在FXML文件中


然而,使用标签可能更有意义,这会给用户更好的视觉反馈,让他们知道这是他们希望点击的东西


并相应地更新控制器中的类型:

@FXML
private Hyperlink IncorrectDataLabel ;
您需要在FXML文件和控制器中适当导入
javafx.control.Hyperlink


非主题说明:用于变量和方法名称。

标签不会触发操作事件,因此不清楚您的意思。用户实际做了什么来运行此方法?(the
initialize()
方法是在
@FXML
-注释字段被注入后调用的,用于初始化控制器。)我的意思是,在这个不正确的数据标签弹出后,用户将能够单击它并重定向到我想要的网站(就像超链接一样)。为什么不使用a而不是标签呢?坦率地说,我不知道=D。我只是在尝试所有东西:P。我会尝试用它!谢谢,这是一个广泛的问题,确实是一个意见问题。SceneBuilder非常适合快速原型制作,也非常适合启动复杂的UI。我经常发现我需要做的事情不是支持由SceneBuilder编辑,例如
元素,因此在中大型项目中,我可能会使用SceneBuilder启动各种UI屏幕,但有时会在稍后编辑FXML代码。将视图(FXML)与控制器分离通常是一件好事。