JavaFX:将多个参数传递给事件处理程序

将多个参数传递给控制器类的 EventHandler 的最合适方法是什么?


我正在为我开发的应用程序开发日历模式。我的要求是分别将月份和年份传递给控制器。这是我目前的做法。


文件格式:


<Button onAction="#handleClicks"  text="DECEMBER" textFill="WHITE" userData="2018/12">

控制器 :


public class CalendarController implements Initializable {


public void handleMonths(ActionEvent ev){

    Node node = (Node) ev.getSource();

    String full_mnth = node.getUserData().toString();

    String[] date = full_mnth.split("/");

    System.out.println("Year : "+date[0] +" Month : "+date[1]);

}

}

但是如果我可以使用数组作为 UserData 或者如果我可以传递多个参数会更容易。有人可以建议最合适的方法来实现这一目标。


繁华开满天机
浏览 277回答 1
1回答

互换的青春

使用Node.properties地图。这允许您使用字符串作为键来存储对象。请确保不要使用类似于static父级属性的键(参考例如AnchorPane.leftAnchor此处),因为这些属性也存储在此映射中:文件<Button onAction="#handleClicks" text="DECEMBER" textFill="WHITE">&nbsp; &nbsp; <properties>&nbsp; &nbsp; &nbsp; &nbsp; <year>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <Integer fx:value="2018"/>&nbsp; &nbsp; &nbsp; &nbsp; </year>&nbsp; &nbsp; &nbsp; &nbsp; <month>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <Integer fx:value="12"/>&nbsp; &nbsp; &nbsp; &nbsp; </month>&nbsp; &nbsp; </properties></Button>控制器@FXMLprivate void handleClicks(ActionEvent event) {&nbsp; &nbsp; Map<Object, Object> properties = ((Node) event.getSource()).getProperties();&nbsp; &nbsp; System.out.println("year: "+properties.get("year"));&nbsp; &nbsp; System.out.println("month: "+properties.get("month"));}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java