Explicação sobre o código

7 respostas
lina

Oi,

Alguem poderia me explicar esse código ?
na verdade não estou conseguindo saber qual o item que eu selecionei na JComboBox.

Segue o código:

public class Estudos extends JFrame{
	  public Estudos(){
	    super("Exemplo de uma tabela simples");
			
	    // colunas da tabela
	    String[] colunas = {"Nome", "Idade", "Sexo"};
			
	    // conteúdo da tabela	
	    Object[][] conteudo = {
	        {"Osmar J. Silva", "32", "Masculino"},
	        {"Maria Clara Gomes", "19", "Feminino"}
	    };
	        
	    // constrói a tabela
	    JTable tabela = new JTable(conteudo, colunas);
	    
	    String[] valores = new String[]{"Masculino", "Feminino"};
	    
	    TableColumn col = tabela.getColumnModel().getColumn(2);
	    col.setCellEditor(new MyComboBoxEditor(valores));
	    
	    // comente se não quiser que o comboxbox apareça quando a
	    // célula não estiver em modo de edição
	    col.setCellRenderer(new ComboBoxRenderer(valores));
	    
	    tabela.setPreferredScrollableViewportSize(new Dimension(350, 50));
	    
	    Container c = getContentPane();
	    c.setLayout(new FlowLayout());
				
	    JScrollPane scrollPane = new JScrollPane(tabela);
	    c.add(scrollPane);
	    	
	    setSize(400, 300);
	    setVisible(true);
	  }
		
	  public static void main(String args[]){
	    Estudos app = new Estudos();
	    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	  }
	  
	  class			ComboBoxRenderer 
	  	extends		JComboBox 
	  	implements	TableCellRenderer
	  {
		  public		ComboBoxRenderer(String[] items)
		  {
		    super(items);
		  }
		    
		  public
		  Component		getTableCellRendererComponent
		  			(
		  				JTable			table, 
		  				Object			value,
		  				boolean			isSelected,
		  				boolean			hasFocus, 
		  				int			row,
		  				int			column
		  			)
		  {
			  if (isSelected) 
			  {
				  setForeground(table.getSelectionForeground());
				  super.setBackground(table.getSelectionBackground());
			  } 
			  else 
			  {
				  setForeground(table.getForeground());
				  setBackground(table.getBackground());
			  }
			  return this;
		  }
	  }

	  
	}

7 Respostas

Shelson

getSelectedItem();

:arrow: JCOMBOBOX

lina

serio? :shock:

Onde posso utilizar este código ? como criar uma ação neste código para receber o item selecionado ?

(Eu sei criar ações… mas neste não funciona como o esperado)

Shelson

vc pode declarar o metodo citado dentro da sua classe que extends JComboBox.

se nao, vc pode criar um outro objeto JComboBox, e colocar o valor da sua classe nele e trabalhar com o q vc precisa.

não tenho como testar aki, mas acho q funciona.

Marky.Vasconcelos

O seu Combo que extende JComboBox não está servindo pra nada… o ideal era criar seu ComboBoxModel para controlar o dado e uma classe que implemente TableCellRenderer para renderiza-lo como voce quer.

Alias… não vi nenhum ComboBox no seu código só isso extendendo mesmo… enquanto sua intenção era apenas usar o Renderer.

Marky.Vasconcelos

E sobre Listeners com JComboBox

combo.addItemListener(itemListener);

ItemListener:
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/event/ItemListener.html
ItemEvent:
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/event/ItemEvent.html

lina

Oi,

Na verdade este código não era feito por mim…
obrigado pelas respostas! funcionou corretamente usando o addItemListener().

Porém agora quando eu utilizo o setModal(true) minha aplicação simplesmente trava! não aparece!
e quando eu retiro funciona :wink: vai entender!

Tchauzin!

wellington7

PS. No código que vc postou falta o seu MyComboBoxEditor, sem ele não consigo rodar aqui.
O modal true vc esta settando em qual linha exatamente? E em qual objeto?

Criado 17 de dezembro de 2008
Ultima resposta 18 de dez. de 2008
Respostas 7
Participantes 4