我有一个看起来像这样的登录按钮:
<Button fx:id="loginButton" mnemonicParsing="false" onAction="#doLogin" prefHeight="29.0" prefWidth="127.46630859375" text="Login" />
单击按钮时,我想在代码中将onAction设置为"#doLogout"
我知道有一个button.setOnAction方法,但它有ActionEvent参数,我有一个问题,在内部类中,当我使用这个选项时我必须要做的,我无法访问变量我需要的外语课。
这个问题还有其他解决办法吗?
答案 0 :(得分:1)
尝试这样的事情:
//In the Controller class
@FXML
private Button loginButton = new Button();
//...
//... on The public void initialize method of the Controller
//...
loginButton.setId("loginButton");
loginButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
Object source = e.getSource();
if (source instanceof Button) { //always true
//Do whatever you want when the event occurs
Button temp = (Button) source;
DoSomething(temp.getId());
}
}
});
然后登录后:
loginButton.setId(&#34; logoutButton&#34);
或创建一个标志:
public boolean userLogged = false;
并检查它以定义按钮应该在此处执行的操作:
loginButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
if(userLogged)
doLogout();
else
doLogin();
}
});