我正在尝试将 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 初始化函数。它是做什么用的?当我创建课程时它会自动弹出。
提前致谢
标签不会触发操作事件。您可以使用鼠标单击事件的侦听器,例如:
@FXML
private void gotoGoogle() {
// open url etc
}
并在 FXML 文件中
<Label fx:id="IncorrectDataLabel" onMouseClicked="#gotoGoogle" ... />
然而,使用Hyperlink http://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/Hyperlink.html为此,这将为用户提供更好的视觉反馈,让他们知道这是他们应该点击的东西。只需将标签替换为
<Hyperlink fx:id="IncorrectDataLabel" onAction="#gotoGoogle" text="..." ... />
并相应地更新控制器中的类型:
@FXML
private Hyperlink IncorrectDataLabel ;
您需要适当的导入javafx.control.Hyperlink
在 FXML 文件和控制器中。
题外话:使用正确的 Java 命名约定 https://en.wikipedia.org/wiki/Naming_convention_(programming)#Java为您的变量和方法名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)