无法访问ListCell类解密之外的ListCell内容

时间:2019-01-18 19:21:46

标签: listview javafx

我正在尝试访问ListCell并通过放置在listcell内的按钮将其返回。将lambda表达式添加到ListCell类(如在类似问题中所建议的)无法正常工作,因为它在listcell实例中声明,这意味着当在类外部调用它时,它返回null。

对于上下文;我正在创建一个列出“来宾列表”对象的应用程序,该对象包含一个“标题”,“描述”和一个“列表视图”内的来宾列表(取自mySql),每个GuestList都包含在ListCell中。这就是ListCell。

“编辑”按钮的目的是获取GuestList,然后将信息放入编辑屏幕。因此,它将需要检索GuestList标题,描述和Guest(列表),以便可以将其全部放置在编辑屏幕中。

这是我要实现的ListCell的代码:

public class customlist extends ListCell<GuestList> {
private HBox C;
private Text Title, D;
private Region RR;
private Button BD;
private StaticTile Initials;
private VBox vbox;
private Button EDIT = new Button();
public CustomListGuestList() {
    super();
        Title = new Text();
        D= new Text();
        RR= new Region();
        BD= new Button();

        HBox.setHgrow(RegionFarRight, Priority.ALWAYS);
        Initials = new StaticTile();
        vbox = new VBox(Title, Description);

    ImageView delete = new ImageView();
    ImageView Edits = new ImageView();
    try {
        Edit.setImage(new Image("Icons/f.png"));
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    try {
        bin.setImage(new Image("Icons/g.png"));
        }
    catch (Exception e) {
        e.printStackTrace();
        }
        BD.setGraphic(bin);
        EDIT.setGraphic(Edit);

        c = new HBox(GuestInitial, vbox, RegionFarRight, btnEdit, btnDelete);
        c.setSpacing(10);

}

public void updateItem(GuestList guestlist, boolean empty) {
    super.updateItem(guestlist, empty);
    if (guestlist != null && !empty) {
        T.setText(G.getTitle());
        D.setText(G.getDesc());
        D.getStyleClass().add("DescText");
        Initials.setText(Character.toString(G.getTitle().charAt(0)));
        setGraphic(content);
    }   else {
        setGraphic(null);
    }

}

以下是您查看GuestLists的整个List视图borderpane的代码片段:

public class GLPage extends GridPane {
 private ListView<GuestList> GL;
 private HBox GLButtons;
 private Button btnCGL, testbutton;
 private createGuestList CGL;
 private CustomListGuestList f = new CustomListGuestList();
public GuestLists() {
    btnCreateGuestList = new Button("Create new GuestList");
    testbutton = new Button("TEST");
    GuestListSettings = new HBox(btnCGL, testbutton);
    createGuestList = new createGuestList();
    GL = new ListView<>();
    GuestList.setPrefHeight(500);
    GuestList.setPrefWidth(1100);

    GuestListSettings.setPrefWidth(1100);
    GuestListSettings.setPrefHeight(100);

    this.add(GLbuttons, 0, 0);
    this.add(G, 0, 1);

}

public void fillGL(ObservableList<GuestList> o) {
    GL.setItems(o);
}

public void emptyGL() {
    GL.getItems().clear();
}

public createGuestList getCGL() {
    return createGuestList;
}

public void addGenerationofCells(EventHandler<ActionEvent> attachDelete) {
    GL.setCellFactory(new Callback<ListView<GuestList>, ListCell<GuestList>>() {
        public ListCell<GuestList> call(ListView<GuestList> GLs) {
            f = new CustomListGuestList();
            f.addDeleteGuestListHandler(attachDelete);
            f.deleteThis();
            f.EditThis();
            return f;

        }
    });
}

GuestList ListView在程序中的外观的屏幕截图(“编辑”按钮是带有“铅笔/笔”图标的按钮):

Screenshot of ListView GuestList screen

GuestList创建在程序中的外观的屏幕截图:

Screenshot of GuestList Creation

与此相关的主要问题是,当您单击“编辑”按钮时,从技术上讲并不是在“选择”列表视图中的项目,这意味着.getSelectedModel.getSelectedItem不起作用。

请让我知道是否需要查看其他部分,请注意,我已经修剪了部分代码以仅包括相关部分,但是可能仍然存在一些错位的行。我还更改了构造函数和函数的名称。

0 个答案:

没有答案