为什么button.getAllStyles().getBgImage()返回null



我的测试用例:

Form hi = new Form("Hi World", BoxLayout.y());
hi.add(new Label("Hello World"));
Button button = new Button(" ");
button.getAllStyles().setBgImage(EncodedImage.createFromImage(Image.createImage(CN.convertToPixels(10), CN.convertToPixels(10), 0xffea5b0c), false));
button.getAllStyles().setBackgroundType(Style.BACKGROUND_IMAGE_SCALED_FIT);
hi.add(button);
hi.addShowListener(l -> {
Image background = button.getAllStyles().getBgImage();
Log.p("background is null? " + (background == null));
});
hi.show();

它记录:

background is null? true

为什么button.getAllStyles().getBgImage()返回null?这是我的错误还是Codename One错误?

因为getAllStyles()的JavaDoc说:

返回一个"元风格";允许对所有不同的Style对象,该样式的getter将是无意义并且将返回0值

原因显而易见。设置所有样式很有意义,您只需在样式对象上循环并设置新值。

但应该得到什么回报呢?如果取消选择和选择不同怎么办?

请改用getUnselectedStyle()

最新更新