Exibir valor de um combobox JavaFx

5 respostas
R

Bom dia, tenho um comboBox que é carregado com valores de um objeto @FXML private ComboBox<ActivityPojo> cbAct;

Recebo o valor da consulta em um listList<UsersPojo> listUsers; e carrego no combo

private void loadComboBox() {
		
		for (ActivityPojo activityPojo : listAct) {
			cbAct.getItems().add(activityPojo);
			cbAct.setValue(activityPojo);
		}
		cbAct.setButtonCell(new ActListCombo());
		cbAct.setCellFactory(new javafx.util.Callback<ListView<ActivityPojo>, ListCell<ActivityPojo>>() {

			@Override
			public ListCell<ActivityPojo> call(ListView<ActivityPojo> param) {
				return new ActListCombo();
			}
		});

	}

Até ai beleza, o problema é que durante uma consulta preciso exibir o valor selecionado em uma tableView no combo e se eu simples pegar o valor do objeto e setar no combo não vai, tentei da seguinte forma:

E tenho o seguinte erro:
“The method setValue(ActivityPojo) in the type ComboBoxBase is not applicable for the arguments (int)”.
Como posso resolver isso?
Grato.

5 Respostas

drsmachado

A partir do momento que você tem um combo cujo tipo de valor contido em cada opção é um objeto de ActivityPojo, você não pode setar um valor que seja diferente de uma instância de objeto de ActivityPojo, que é o que tenta fazer aqui cbAct.setValue(activityPojo.getId());. A opção mais correta seria remover a chamada ao método getId(), deixando, apenas: cbAct.setValue(activityPojo);

R

Obrigado pela resposta, eu tentei fazer isso, porém ele não exibe o valor, ele mostro o objeto como um todo.

drsmachado

Com certeza por que você não sobrescreveu o método toString dele. Faça isso e veja o resultado.

R

Realmente funcionou, dei uma editada no toString e ficou legal, porém agora enfrento um problema, esse mesmo combo recebe vários itens de uma tabela, ao utilizar o método toString para exibir o valor, ele perde a posição dos itens, ou seja, continua listando porém ao capturar o dado ele passa como value o valor 0 independete se mantenho o valor vindo da pesquisa ou se seleciono outro.

drsmachado

Como assim? O fato de você formatar o que o objeto apresentará quando lido como String não deve interferir nos métodos referentes ao ComboBox.
Coloca o código aí.

Criado 15 de fevereiro de 2017
Ultima resposta 20 de fev. de 2017
Respostas 5
Participantes 2