Jcombobox

10 respostas
S

Fala Galera…
to com um probleminha aqui em popular meu combobox, eu uso o setModel para inserir os itens no meu combo!! mas antes de carregar a lista no combo precisava carrega uma String ex:

1)String
2)Lista

a string contem o texto Escolha: e precisa ser o primeiro item da lista e em baixo de Escolha:, precisava que carrega-se a minha lista veja meu codigo, mas n funcionou apenas carrego a lista sem a String

jcb_combo.setModel(new DefaultComboBoxModel(c.toArray(new Bean[0])));
jcb_combo.addItem("Escolha:");
jcb_combo.setSelectedItem("Escolha:");

10 Respostas

nel

Boa tarde.

Então, meu conhecimento em Swing é muito básico, mas lhe pergunto, desta forma não funciona? jcb_combo.setModel(new DefaultComboBoxModel(c.toArray(new Bean[0]))); jcb_combo.setName("Escolha"); jcb_combo.add(sua_java.util.List);

Você seta o nome do combo e adiciona uma lista.
Abraços.

fredsilva.sistemas

Porque vc não tenta inserir a lista à partir do índice 1. No índice 0 vc adiciona a String e depois a lista.
T+

S

agradeco a atencao de todos mas n deu certo! ;/ alguem sabe como insiro em um jcombobox uma string + uma lista?

M

Não seria mais adequado colocar a instrução de escolha em um Label em cima do JList?

Fernando_Generoso_da

O jeito correto de fazer é tu criar um ComboModel, que extende DefaultComboBoxModel, e ao instanciar teu objeto List, tu já passar a String como o primeiro da lista.

Fernando

S

marco… n atenderia minhas necessidades assim vlw!
fernando… poderia me exemplificar se nao for pedir muito? obrigado!

M

Você pode tentar o seguinte. Crie essa classe:

import java.util.List;

import javax.swing.DefaultComboBoxModel;

public class MeuComboBoxModel extends DefaultComboBoxModel {

	private static final long serialVersionUID = 1L;

	public void addAll(List<? extends Object> list) {
		for (Object o : list) {
			addElement(o);
		}
	}
	
}

E na parte onde você cria seu JComboBox, faça o seguinte:

MeuComboBoxModel model = new MeuComboBoxModel();
model.addElement("Escolha:");
model.addAll(c);
jcb_combo.setModel(model);
jcb_combo.setSelectedItem("Escolha:");
S

certo marco… mas veja so adiciono minha lista assim:

jcb_combo.setModel(new DefaultComboBoxModel(c.toArray(new Bean[0])));

como faria para adicionar essa lista junto com o addElement(“Escolha”)

M

A resposta está acima. Crie um objeto do tipo MeuComboBoxModel chame o addElement para o “Escolha:” (será o primeiro item) e depois chame o método addAll() passando sua List.

Você já tentou isso?

Fernando_Generoso_da

Esse é um exemplo de ComboModel que vc pode utilizar:

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.swing.AbstractListModel;
import javax.swing.MutableComboBoxModel;

public class TesteComboBoxModel extends AbstractListModel implements MutableComboBoxModel,
        Serializable {

	private static final long serialVersionUID = 1L;

	private List<String> items = new ArrayList<String>();

	private String itemSelecionado;

	public TesteComboBoxModel() {
		items.add("Primeira String");
		fireContentsChanged(items, 0, items.size());

	}

	@Override
	public void addElement(Object obj) {
		if (obj instanceof String) {
			items.add((String) obj);
			fireContentsChanged(items, 0, items.size());
		}
	}

	public void addItem(String elemento) {
		items.add(elemento);
		fireContentsChanged(items, 0, items.size());
	}

	@Override
	public Object getElementAt(int index) {
		return items.get(index);
	}

	public List<String> getItems() {
		return items;
	}

	@Override
	public Object getSelectedItem() {
		return itemSelecionado;
	}

	@Override
	public int getSize() {
		return items.size();
	}

	@Override
	public void insertElementAt(Object obj, int index) {
		items.add(index, (String) obj);
		fireContentsChanged(items, 0, items.size());
	}

	public void removeAllElements() {
		items.clear();
		fireContentsChanged(items, 0, items.size());
	}

	@Override
	public void removeElement(Object obj) {
		items.remove(obj);
		fireContentsChanged(items, 0, items.size());
	}

	@Override
	public void removeElementAt(int index) {
		items.remove(index);
		fireContentsChanged(items, 0, items.size());
	}

	public void setItems(List<String> items) {
		this.items = items;
		fireContentsChanged(items, 0, items.size());
	}

	@Override
	public void setSelectedItem(Object anItem) {
		itemSelecionado = (String) anItem;

	}

}
Criado 16 de dezembro de 2009
Ultima resposta 17 de dez. de 2009
Respostas 10
Participantes 5