JavaFX - ContextMenu diferente para cada nivel TreeTableView

1 resposta
Satangozo

Olá a todos,
Eu tenho uma TreeTableView que tem 3 níveis de TreeItens.
Meu objetivo é criar um ContextMenu com opções diferentes para cada nível do TreeItem selecionado.

Pensei em adicionar um Listener na minha TreeTableView e pegar a linha selecionada comparar e criar o ContextMenu, mas eu não sei o que fazer a partir do listener, abaixo está o que eu comecei a fazer:

tbMovFinanceiro.getSelectionModel().selectedItemProperty().addListener( (ObservableValue<? extends TreeItem> observable, TreeItem oldValue, TreeItem newValue) -> { //Que evento acionar aqui? });

Edit 1 -

Eu fiz assim agora, mas não sei se ficou legal… @Andrauss eu peguei o newValue entretanto algumas vezes ele dispara um nullPointerException do nada e nunca do mesmo jeito… as vezes dispara as vezes não, cansei de procurar e fiz ele pegar a lista de objetos selecionados até 50x enquanto não houver um SelectedItem… Melhorou pois ainda não disparou novamente o nullPointer, e ficou assim:

tbPagar.getSelectionModel().selectedItemProperty().addListener( (ObservableValue<? extends TreeItem> observable, TreeItem oldValue, TreeItem newValue) -> { ObservableList<TreeItem> ol = PegaSelecao.getSelecaoMovFinanceiro(tbPagar); //esse método verifica o SelectedItem ate 50x até que tenha algo if (ol.size() == 1) { GenericMovFinanceiro selecionado = ol.get(0).getValue(); //Verifica se é de nivel 1 miPagarInserirFilho.setDisable(selecionado.getObjeto() != null); //Verifica se é de nivel 2 miPagarAbrirMovimento.setDisable(selecionado.getObjeto() == null); //Verifica se é de nivel 3 miPagarEditar.setDisable(selecionado.getPlano() == null && selecionado.getObjeto() == null); miPagarExcluir.setDisable(selecionado.getPlano() == null && selecionado.getObjeto() == null); } });

1 Resposta

Andrauss

Olá, use o newValue.getParent() ele retorna o item pai. Posta o código do preenchimento e o seu Bean.

Criado 19 de fevereiro de 2016
Ultima resposta 19 de fev. de 2016
Respostas 1
Participantes 2