ListView JavaFX中的自定义项

时间:2018-03-29 09:23:02

标签: image listview javafx

我对JavaFX中的ListView有疑问。

我如何在ListView中执行自定义项目,如下所示:

ScreenShot SS

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

1 个答案:

答案 0 :(得分:1)

实施您自己的CellFactory会为您提供要在ListView单元格上应用的所有选项。不幸的是,您上传的图片没有打开,因此我无法理解您的确切要求。无论如何,这是您为CellFactory设置ListView的方式,其中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);
                }
            }
        };
    }
});