ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

如何映射JavaFX可观察量的值?

2019-06-08 17:48:53  阅读:149  来源: 互联网

标签:java javafx javafx-8


我有一个SimpleIntegerProperty,并希望派生SimpleObjectProperty< Color>从中.
为此,我想象一些机制,如流和选项:

SimpleIntegerProperty intProp;
ObjectProperty<Color> colorProp = intProp.map(i -> convertIntToColor(i), c -> convertColorToInt(c));

有内置的东西还是我真的需要自己推出?
如果没有这样的东西,那似乎很奇怪,因为查看Bindings的所有功能会给你强烈的感觉,这个功能也应该存在.

谢谢!

解决方法:

不确定这是否是最好的方法,但这似乎可以使用Bindings.createObjectBinding:

@Test
    public void test() {
        SimpleIntegerProperty simpleIntegerProperty = new SimpleIntegerProperty(1);
        ObjectBinding<Color> binding = Bindings
                .createObjectBinding(() -> converToColor(simpleIntegerProperty.get()), simpleIntegerProperty);
        System.out.println(binding.get());
        binding.addListener(new ChangeListener<Color>() {
            @Override
            public void changed(ObservableValue<? extends Color> observable, Color oldValue, Color newValue) {
                System.out.println(newValue);
            }
        });
        simpleIntegerProperty.set(2);
    }

    private Color converToColor(int i) {
        switch (i) {
            case 1:
                return Color.RED;
            case 2:
                return Color.BLUE;
        }
        return null;
    }

标签:java,javafx,javafx-8
来源: https://codeday.me/bug/20190608/1199245.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有