为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁华开满天机 2021-12-30 16:11:34
将多个参数传递给控制器类的 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 或者如果我可以传递多个参数会更容易。有人可以建议最合适的方法来实现这一目标。
查看完整描述

1 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

使用Node.properties地图。这允许您使用字符串作为键来存储对象。请确保不要使用类似于static父级属性的键(参考例如AnchorPane.leftAnchor此处),因为这些属性也存储在此映射中:


文件

<Button onAction="#handleClicks" text="DECEMBER" textFill="WHITE">

    <properties>

        <year>

            <Integer fx:value="2018"/>

        </year>

        <month>

            <Integer fx:value="12"/>

        </month>

    </properties>

</Button>

控制器

@FXML

private void handleClicks(ActionEvent event) {

    Map<Object, Object> properties = ((Node) event.getSource()).getProperties();

    System.out.println("year: "+properties.get("year"));

    System.out.println("month: "+properties.get("month"));

}


查看完整回答
反对 回复 2021-12-30
  • 1 回答
  • 0 关注
  • 276 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信