如何在javafx中使用getTarget?
问题是IntelliJ思想不允许我使用如何在javafx中使用getTarget?,javafx,Javafx,问题是IntelliJ思想不允许我使用getTarget()方法。基本思想是当您单击jfxbutton时显示AnchorPane。怎么做?我有一种感觉,我需要连接一个库,但哪一个 控制器 package sample; import com.jfoenix.controls.JFXButton; import javafx.fxml.FXML; import javafx.scene.layout.AnchorPane; import java.awt.event.MouseEvent;
getTarget()
方法。基本思想是当您单击jfxbutton
时显示AnchorPane
。怎么做?我有一种感觉,我需要连接一个库,但哪一个
控制器
package sample;
import com.jfoenix.controls.JFXButton;
import javafx.fxml.FXML;
import javafx.scene.layout.AnchorPane;
import java.awt.event.MouseEvent;
import javafx.event.EventTarget;
import javafx.event.ActionEvent;
import javafx.animation.*;
public class Controller {
@FXML
private AnchorPane area;
@FXML
private AnchorPane per;
@FXML
private JFXButton btn_per;
@FXML
private JFXButton btn_area;
int i = 1;
@FXML
private void handleButtonAction (MouseEvent event) {
if (event.getTarget() == btn_per) { //This
per.setVisible(true);
}
}
public void initialize() {
btn_per.setOnAction(event -> {
per.setVisible(true);
area.setVisible(false);
});
btn_area.setOnAction(event -> {
per.setVisible(false);
area.setVisible(true);
});
}
}
导入
javafx.scene.input.MouseEvent
而不是java.awt.event.MouseEvent
。此外,如果使用onAction
事件,正确的参数类型是ActionEvent
,而不是MouseEvent
。也可以使用getSource
而不是getTarget
。不过,最好使用多个处理程序来处理不同的节点,而不是检查源。此外,通常建议您为每个特定操作定义一个单独的方法,并且只使用应调用该操作的特定控件注册该处理程序方法。这样,就不需要测试事件的目标(或源,这可能是您真正想要的)。也可以从fxml注册处理程序,或者为此使用initialize
方法,但不能同时使用这两种方法。使用setOnAction
替换处理程序。如果需要添加多个处理程序,则应使用addEventHandler(ActionEvent.ACTION,eventHandler)代码>