我想使用handleModellAction
方法将现有setOnAction
方法分配给生成的超链接,但我不知道如何执行此操作。
这是我的代码示例: -
@FXML
private void handleModellAction(ActionEvent event) throws IOException{
FXMLLoader load = new FXMLLoader(getClass().getResource("InEX.fxml"));
Parent root = (Parent) load.load();
Stage stage = new Stage();
stage.setScene(new Scene(root));
stage.show();
link = (Hyperlink) event.getTarget();
model = link.getId();
stage.setTitle(model);
}
public void addNeuesModell(String bauart, String modelName){
modelHyperlink = new Hyperlink();
modelHyperlink.setId(modelName);
modelHyperlink.setText(modelName);
modelHyperlink.setOnAction(#handleModellAction);
}
有人知道怎么做吗?
非常感谢:)
答案 0 :(得分:1)
您可以尝试在setOnAction
上调用modelHyperlink
方法,并将匿名类作为参数传递给处理程序,您可以在其中传输handleModellAction
方法的逻辑。您可以在下面找到一个示例:
Hyperlink link = new Hyperlink();
link.setText("http://example.com");
link.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
FXMLLoader load = new
FXMLLoader(getClass().getResource("InEX.fxml"));
Parent root = (Parent) load.load();
Stage stage = new Stage();
stage.setScene(new Scene(root));
stage.show();
link = (Hyperlink) event.getTarget();
model = link.getId();
stage.setTitle(model);
}
});
答案 1 :(得分:0)
而不是定义
<HyperLink fx:id="myLink" onAction="#handleModelAction"/>
你可以使用:
<HyperLink fx:id="myLink"/>
然后在代码中: 重构你的handleMethod像这样:
private void handleModellAction() throws IOException {
FXMLLoader load = new FXMLLoader(getClass().getResource("InEX.fxml"));
Parent root = load.load();
Stage stage = new Stage();
stage.setScene(new Scene(root));
stage.show();
}
之后:
myLink.setOnAction(action -> {
try {
handleModellAction();
} catch (IOException e) {
e.printStackTrace();
}
});
然后,你可以在任何按钮,超链接等任何地方使用handleModellAction()
..