更改项目

时间:2015-04-28 12:02:28

标签: listview javafx listener

我最近遇到了一个问题;我使用HBox的ListView来显示文本和CheckBox。当您单击列表中的某个项目时,我正在使用onMouseClicked侦听器来选中该复选框。问题是,当我通过清除和设置新项目来更改项目时,监听器不再接缝工作了。我试图重置听众,但没有改变接缝。有关如何解决此问题的任何想法?

换句话说,我得到了这个。当我点击列表中的某个项目时,会选中该复选框。

http://hpics.li/597d8db

但是,当我试图更改列表的项目时,它会删除监听器。我不能再单击该项目以选中该框。像这样。

http://hpics.li/2b81cc9

我一直在这个函数中添加一个监听器:

public void ajouterEcouteur(Interface inter)
{
    inter.list.setOnMouseClicked(new ActionListe());
}

private class ActionListe implements EventHandler<MouseEvent>
{

    @Override
    public void handle(MouseEvent e) 
    {
        Interface temp = listInterfaces.get(vue.tabPane.getSelectionModel().getSelectedIndex());
        int index = temp.list.getSelectionModel().getSelectedIndex();
        if(listHbox.get(index).getChildren().get(0) instanceof CheckBox)
        {
            if(!((CheckBox) listHbox.get(index).getChildren().get(0)).isSelected())
            {
                ((CheckBox) listHbox.get(index).getChildren().get(0)).setSelected(true);
            } else {
                ((CheckBox) listHbox.get(index).getChildren().get(0)).setSelected(false);;
            }
        }
    }

}

此外,当我在这样的复选框中选择一个项目时,我一直在尝试添加监听器。

if(e.getSource() == interface1.cb)
            {
                if(!interface1.list.getItems().isEmpty())
                {
                    ObservableList<HBox> listhbox = interface1.list.getItems();
                    for (HBox hBox : listhbox) {
                        ObservableList<Node> list = hBox.getChildren();
                        if(list.get(0) instanceof CheckBox && ((CheckBox) list.get(0)).isSelected())
                        {
                            interface1.perm.add(((Text) list.get(1)).getText().trim());

                        }
                    }
                }
                interface1.list.setOnMouseClicked(new ActionListe());

                recherchePermissions();
            }

我不知道为什么它不起作用。如果你这样做,请告诉我! 谢谢 !

-nic

  • 对不起链接,我需要图片的声誉*

0 个答案:

没有答案