【问题标题】:Custom item in ListView JavaFXListView JavaFX 中的自定义项
【发布时间】:2018-09-08 04:38:35
【问题描述】:

我对 JavaFX 中的 ListView 有疑问。

我怎样才能像这样在 ListView 中做自定义项目:

ScreenShot SS

其次,当我点击 Button1 时,我想显示 image2 和 textfield1

【问题讨论】:

标签: java image listview javafx


【解决方案1】:

实现您自己的CellFactory 为您提供了您想在ListView 的单元格上应用的所有选项。不幸的是,您上传的图片没有打开,所以我无法理解您的确切要求。无论如何,这就是您为ListView 设置CellFactory 的方式,其中T 是您的数据类型。

ListView#setCellFactory(Callback<ListView<T>, ListCell<T>> value)

示例:

ListView<Employee> listView = new ListView<>();
listView.setCellFactory(new Callback<ListView<Employee>, ListCell<Employee>>() {
    @Override
    public ListCell<Employee> call(ListView<Employee> param) {
        return new ListCell<Employee>() {

            private ImageView imageView = new ImageView("ImageURL");
            private TextField textField = new TextField("Text");
            private Button button = new Button("Button");
            private BorderPane bp = new BorderPane(imageView, null, button, null, textField);

            @Override
            protected void updateItem(Employee item, boolean empty) {
                if (item == null || empty) {
                    setText(null);
                    setGraphic(null);
                } else {
                    setText(item.getName());
                    setGraphic(bp);
                }
            }
        };
    }
});

【讨论】:

  • 我想在 Listview 中的一项上有按钮、图像视图、文本视图
  • 不要在每次调用 updateItem 时重新创建控件(它经常被调用)
  • 我只是想举例说明如何使用graphic属性在单元格中包含控件。
  • 谢谢 :) 就是这样 :)
  • @kleopatra 举一个很好的例子来说明如何实现它,而不是只给出负面反馈。你的方式对社区没有帮助。
猜你喜欢
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-04
  • 2015-02-10
  • 1970-01-01
  • 2018-06-20
  • 1970-01-01
  • 2013-03-27
相关资源
最近更新 更多