Combo de cor em uma JTable

2 respostas
furacao123

Ae galera estou tentando fazer um JComboBox de cores onde a cor q eu escolhe preenche a celula da minha JTable mas esta ocorrendo o seguinte o combo consegui fazer as opçoes de cores...ja adicionei ele na minha JTable, mas depois q escolho a cor ele preenche minha célula assim java.awt.Color[r=200,g=100,b=0] por exemplo, nao aparece a cor, segue a baixo os codigos

public class frmHora extends JFrame{
	public frmHora() throws java.text.ParseException {
		super("Exemplo de uma tabela com celulas hora formatados");
		
		MaskFormatter celulaHora = null;
		JFormattedTextField jftf;
		
		// colunas da tabela   
	    String[] colunas = {"Nome", "Idade", "Sexo"};   
	           
	    // conteúdo da tabela     
	    Object[][] conteudo = {   
	        {"", "", ""},   
	        {"", "", ""},   
	        {"", "", ""},   
	        {"", "", ""}   
	    };   
	           
	    // constrói a tabela   
	    JTable tabela = new JTable(conteudo, colunas);   
	       
	    // quero colorir o fundo das células da segunda coluna   
	    // se o valor encontrado for menor que 20   
	 //   TableCellRenderer tcr2 = new Colorir2();
	    TableCellRenderer tcr = new Colorir();    
	    TableColumn column = tabela.getColumnModel().getColumn(1);   
	  //  TableColumn column2 = tabela.getColumnModel().getColumn(2);
	    
	    column.setCellRenderer(tcr);   
	  
	    tabela.setPreferredScrollableViewportSize(new   
	          Dimension(350, 50));   
	       
	    Container c = getContentPane();   
	    c.setLayout(new FlowLayout());   
	               
	    JScrollPane scrollPane = new JScrollPane(tabela);   
	    c.add(scrollPane);   
	    
	    /************ FORMATA A CÉLULA DESEJADA DA TABELA ***************/
	    try {	    	
            celulaHora = new MaskFormatter("##:##");
            celulaHora.setPlaceholderCharacter('_');
        } catch (ParseException e) {
            e.printStackTrace();
        }
        // Jogando a máscara no JFTF
        jftf = new JFormattedTextField(celulaHora);
	    
        TableColumn col = tabela.getColumnModel().getColumn(1);
        
	    col.setCellEditor(new DefaultCellEditor(jftf));
	    
	    /*********** NA COLUNA É ADICIONADA COMBOBOX *****************/
	        //Set up the editor for the sport cells.
	        JComboBox tipoBox = new JComboBox();
	        tipoBox.addItem(Color.BLACK);
	        tipoBox.addItem(Color.YELLOW);
	        tipoBox.addItem(Color.CYAN);
	        tipoBox.addItem(Color.ORANGE);
	        tipoBox.addItem(Color.BLUE);

	        tipoBox.setRenderer(new ColorComboRenderer());
	        
	        TableColumn col2 = tabela.getColumnModel().getColumn(2);
	        
	        col2.setCellRenderer(new AuxiliarTableRenderer());

	        //Set up tool tips for the sport cells.
	        /*AuxiliarTableRenderer renderer = new AuxiliarTableRenderer();
	        renderer.setToolTipText("Escolha o tipo de horário");
	        col2.setCellRenderer(renderer);*/

	    
	    setSize(600, 300);   
	    setVisible(true);   
	  }
e a classe AuxiliarTableRenderer
public class AuxiliarTableRenderer extends JButton implements TableCellRenderer {   
	  
    @Override   
    public Component getTableCellRendererComponent(JTable table, Object value,   
            boolean isSelected, boolean hasFocus, int row, int column) {   
        Color color = (Color) value;   
        if (color != null) {   
            setBackground(color);   
  
            return this;   
        }   
        return null;   
  
    }   
  
}

alguem pode me ajudar no q estou fazendo errado, ou deixando de fazer.

Obrigado.

2 Respostas

pintofree

Amigo aqui http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#selection tem um exemplo pronto de uma tabela com o opção de selecao de cor e so dar uma olhada

furacao123

eu ja dei uma olhada nesse link ja baxei todos exemplo e estudei mas ainda nao consegui pintar a celula pelo comboBox nesse exemplo ele usa o JChooser e escolhe a cor

eu quero q as cores ja venham pre estabelecidas num ComboBox mas não consigo

Criado 5 de janeiro de 2009
Ultima resposta 5 de jan. de 2009
Respostas 2
Participantes 2