当前位置: 首页 > 知识库问答 >
问题:

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

岳承悦
2023-03-14

我试图将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
}

我如何能够解决这个问题?我已经尝试了很多次(setOnAction, addMouseListener),但都不起作用:(。

如果你不介意的话,我还想问一下public void initialize函数。这是干什么用的?当我创建类时,它会自动弹出。

提前感谢

共有1个答案

鲁滨海
2023-03-14

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

@FXML
private void gotoGoogle() {
    // open url etc
}

在FXML文件中

<Label fx:id="IncorrectDataLabel" onMouseClicked="#gotoGoogle" ... />

然而,对于这一点,使用超链接可能更有意义,这会给用户更好的视觉反馈,让他们知道这是他们应该点击的东西。只需将标签替换为

<Hyperlink fx:id="IncorrectDataLabel" onAction="#gotoGoogle" text="..." ... />

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

@FXML
private Hyperlink IncorrectDataLabel ;

您需要为javafx进行适当的导入。控制FXML文件和控制器中的超链接。

非主题注释:对变量和方法名称使用适当的Java命名约定。

 类似资料:
  • 问题内容: 如何将动作侦听器添加到这些按钮,以便可以从主要方法调用actionperformed它们,因此单击它们时可以在程序中调用它们? 问题答案: 两种方式: 1.在你的类中实现,然后使用; 稍后,你必须定义一个方法。但是,对多个按钮执行此操作可能会造成混淆,因为该方法将必须检查每个事件()的来源以查看其来自哪个按钮。 2.使用匿名内部类: 稍后,你必须定义。当你有多个按钮时,这样做效果更好,

  • 我正在尝试使用for循环在JavaFX中迭代地向GridPane添加标签,但当我尝试启动应用程序时,我一直收到错误。控制台输出是: 我是这方面的初学者,但我明白它告诉我,我正在尝试放置一个已经放置的物体。 代码: 然后我继续使用一个标签数组,我相信它不会试图替换一个已经放置的对象,但是我收到了另一个错误: 代码:

  • 问题内容: 如何将actionListener添加到使用netbeans放置的现有jCalendar的jDayChooser组件中? 我只想在单击日期按钮时才触发事件。当jCalendar中的propertyChange甚至侦听jMonthChooser和jYearChooser时 使用Toedter的jCalendar的PS 问题答案: 或者,你可以侦听特定的,。 附录: 如何使它适用于 ? 同

  • 问题内容: 在我的Java桌面应用程序中,我有一个TableView,我想在其中包含CheckBoxes列。 我确实在http://www.jonathangiles.net/javafx/2.0/CellFactories/上找到了完成的位置,但是由于无法下载,因为我不知道Jonathan Giles会多久回复我的电子邮件,所以我认为d问… 如何将CheckBox放在TableView的单元格中

  • 我有一个问题,我真的不知道如何在JavaFX中将多行添加到Label中。 例如: 因此,当循环结束时,标签仅显示最终值9。 因此,任何可以显示所有数字1-9并在它们之间加上断线(例如'\n')的解。 当我想显示包含许多菜肴的项目账单时,会出现这个问题。谢谢你的帮助。