小编Col*_*uds的帖子

Java - 为什么我的静态变量被设置为null?

编辑1:我想我可能已经弄明白了.

这是我的initialize()方法

public void initialize(URL location, ResourceBundle resources) {
    groupList.setItems(createGroupFilter());
    groupList.getSelectionModel().selectedItemProperty().addListener(obs -> {
        Group.setSelectedGroup(groupList.getSelectionModel().getSelectedItem());
        handleGroupSelected();
    });
Run Code Online (Sandbox Code Playgroud)

我认为当我重新加载groupList ListView时,正在调用这个selectedItemProperty侦听器并将其设置为null.

我通过在侦听器中添加if条件来修复此问题:

public void initialize(URL location, ResourceBundle resources) {
    groupList.setItems(createGroupFilter());
    groupList.getSelectionModel().selectedItemProperty().addListener(obs -> {
        if(groupList.getSelectionModel().getSelectedItem() != null) {
            Group.setSelectedGroup(groupList.getSelectionModel().getSelectedItem());
            handleGroupSelected();
        }
    });
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我的静态'selectedGroup'变量被设置为null,我无法弄清楚原因.

我已经进行了以下故障排除.

我有一个名为'refresh()'的方法,它调用一个名为'createGroupFilter()'的方法.我已经包含了以下System.out.println语句,以便查看变量何时变为空.

private void refresh() {
    System.out.println("before groupList.setItems(createGroupFilter()); "  + Group.getSelectedGroup()); //TROUBLESHOOTING
    groupList.setItems(createGroupFilter());
    System.out.println("after groupList.setItems(createGroupFilter()); "  + Group.getSelectedGroup()); //TROUBLESHOOTING
    if(Group.getSelectedGroup() != null) {
        groupList.getSelectionModel().select(Group.getSelectedGroup());
        int n = groupList.getSelectionModel().getSelectedIndex();
        groupList.getFocusModel().focus(n);
        groupList.scrollTo(n);
        userList.setItems(createUserFilter());
        if(User.getSelectedUser() != null) {
            userList.getSelectionModel().select(User.getSelectedUser());
        }
    }
}

private FilteredList<Group> …
Run Code Online (Sandbox Code Playgroud)

java static javafx java-8 javafx-8

1
推荐指数
1
解决办法
560
查看次数

标签 统计

java ×1

java-8 ×1

javafx ×1

javafx-8 ×1

static ×1