当前位置: 首页 > 面试题库 >

JavaFX:使用Object属性的ComboBox

韦智刚
2023-03-14
问题内容

可以说我有一堂课:

public class Dummy {
    private String name;
    private String someOtherProperty;

    public String getName() {
       return name;
    }
}

我有一个此类的ArrayList ArrayList<Dummy> dummyList;

是否可以使用对象名称属性作为选择选项来创建JavaFX ComboBox,而无需ArrayList<String>使用对象名称创建新的JavaFX
ComboBox ?

代码

ObservableList<Dummy> dummyO = FXCollections.observableArrayList(dummyList);
final ComboBox combo = new ComboBox(dummyO); // -> here dummyO.name?

(可选)理想情况下,虽然应该显示名称,但在选择了一个选项后,该名称combo.getValue()应该返回给我所选的Dummy的引用,而不仅仅是名称。那可能吗?


问题答案:

您可以使用自定义方式cellFactory来显示适合您需求的项目:

ComboBox<Dummy> comboBox = ...

Callback<ListView<Dummy>, ListCell<Dummy>> factory = lv -> new ListCell<Dummy>() {

    @Override
    protected void updateItem(Dummy item, boolean empty) {
        super.updateItem(item, empty);
        setText(empty ? "" : item.getName());
    }

};

comboBox.setCellFactory(factory);
comboBox.setButtonCell(factory.call(null));


 类似资料:
  • 设置或返回作为指定COMAddIn 对象的基础的对象。Object 类型,可读写。 说明 此属性主要用于使一个COMAddIn 能够与另一个COMAddIn 进行通信。 示例 以下示例返回与 COM 加载项msodraa9.ShapeSelect 相关联的对象。 Dim objBaseObject As Object Set objBaseObject = _ Application.COMAd

  • 我希望将JavaFX属性用于UI绑定,但我不希望它们出现在我的模型类中(请参见在模型类中使用JavaFX.Beans属性)。我的模型类有getter和setter,我想基于这些创建属性。例如,假设一个实例具有和方法,我将编写 希望会触发对的调用。但这似乎不起作用。我错过了什么?

  • 主要内容:JavaFX属性的类型,读/可写属性,只读属性,JavaFX JavaBean,属性更改事件JavaFX属性存储控件的内部状态,并允许我们监听来自JavaFX UI控件的状态更改。JavaFX属性可以彼此绑定。绑定行为允许属性根据来自另一个属性的更改值来同步其值。 JavaFX属性的类型 有两种类型的JavaFX属性: 读写(Read/Writable) 只读(Read-Only) JavaFX的属性包含实际值,并提供更改支持,无效支持和绑定功能。所有JavaFX属性类都位于包命名空间

  • 我试图将Lombok与JavaFX属性结合使用: 这将为属性本身生成getter和setter: null getID():int 集合id(int id) GetIdProperty():SimpleIntegerProperty getName():string setName(字符串名称) GetNameProperty():SimpleStringProperty ... 这在龙目岛支持吗

  • 问题内容: 我熟悉Java,但是刚开始学习JavaFX,尤其是学习JavaFX属性。我了解Oracle的以下示例所示的基本设计模式: 我不明白的是什么时候/为什么要使用getter和setter方法,而不是直接使用Property? 我在想的是,您可能希望在getter和/或setter中有一些自定义代码,这些代码可能对数据做一些前后操作/验证,但是如果您创建自定义getter和/或setter,

  • 我正在维护一个对象。我的对象结构是Id、name和一些其他细节。我需要删除一个带有一些id值的对象,比如(10),我不想遍历列表。有什么解决方案吗?