gpt4 book ai didi

java - 如何将属性(例如 Enum)绑定(bind)到不同类型的组件属性(例如每个 Enum 的图像)?

转载 作者:行者123 更新时间:2023-12-04 06:26:46 25 4
gpt4 key购买 nike

我继承了一个使用 JGoodies Binding 将域模型连接到 GUI 的项目。但是,我发现了一些不一致的地方,这也导致了一些错误。

在这个具体案例中,GUI 由两个单选按钮和一个标签表示。根据选择的按钮,标签应显示特定图像。这些按钮绑定(bind)到不同的枚举值,如下所示:

AbstractValueModel enumSelectionModel = presentationModel.getModel("selection");

radioBtn1 = BasicComponentFactory.createRadioButton(enumSelectionModel,
Selection.selection1, "");

radioBtn2 = BasicComponentFactory.createRadioButton(enumSelectionModel,
Selection.selection2, "");
"selection"是绑定(bind)属性, Selection是枚举,这意味着当更改不同的按钮时, selection我的模型中的属性设置为相应的枚举值。

我的问题是: 如何将此属性绑定(bind)到标签显示的图像?

据我所见,JGoodies 非常适合将字符串之类的内容绑定(bind)到文本字段,但在这种情况下,还应该进行转换,一些逻辑决定将枚举属性映射到图像。

最佳答案

似乎我只需要仔细查看 Binding API。一个 AbstractConverter正是我想要的。

Bindings.bind((JComponent) pictureLabel, "icon", new EnumToIconConverter(enumSelectionModel));
bind方法将pictureLabel 的图标绑定(bind)到转换器描述的模型。转换器如下所示:
class EnumToIconConverter extends AbstractConverter {

EnumToIconConverter(ValueModel subject) {
super(subject);
}

@Override
public Object convertFromSubject(Object enum) {
return enum == Selection.selection1 ? image1 : image2;
}

@Override
public void setValue(Object obj) {
throw new UnsupportedOperationException("setValue makes no sense for this converter");
}
}
convertFromSubject方法是从枚举到图像的转换完成的地方。我没有实现 setValue因为在这种情况下没有任何意义。图像不能自行更改,我只希望更新以一种方式进行 - 从枚举属性到图像。

关于java - 如何将属性(例如 Enum)绑定(bind)到不同类型的组件属性(例如每个 Enum 的图像)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5948147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com