jCheckBox em jTable

4 respostas
M

Gostaria de saber como faço para colocar um jCheckBox dentro de uma tabela pelo netbeans, eu já consegui colocar o jCheckBox mais não consigo deixá-lo selecionado quando clicado
o que faço?

4 Respostas

F

É só tu sobreescrever o método isCellEditable(linha, coluna) do seu tablemodel.

exemplo:

@Override
	public boolean isCellEditable(int row, int column) {
		return (column == COL_REALIZADO) ? true : false;
	}
M
Cara eu quase consegui valew ae, mas tá muito dificil ainda, o meu código está assim.
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;

/**
 *
 * @author bruno
 */
class ButtonColumnCertinho extends AbstractCellEditor  
     implements TableCellRenderer, TableCellEditor, ActionListener   
{   
     JTable table;   
     JCheckBox renderButton;   
     JCheckBox editButton;   
     String text;   
     
     public ButtonColumnCertinho(JTable table, int column)   
     {   
         super();   
         this.table = table;   
         renderButton = new JCheckBox();   
  
         editButton = new JCheckBox();   
         editButton.setFocusPainted( false );   
         editButton.addActionListener( this );   
  
         TableColumnModel columnModel = table.getColumnModel();   
         columnModel.getColumn(column).setCellRenderer( this );   
         columnModel.getColumn(column).setCellEditor( this );   
     }   
  
     public Component getTableCellRendererComponent(   
         JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)   
     {   
         if (hasFocus)   
         {   
             renderButton.setForeground(table.getForeground());   
             renderButton.setBackground(UIManager.getColor("Button.background"));   
         }   
         else if (isSelected)   
         {   
             renderButton.setForeground(table.getSelectionForeground());   
              renderButton.setBackground(table.getSelectionBackground());   
         }   
         else   
         {   
             renderButton.setForeground(table.getForeground());   
             renderButton.setBackground(UIManager.getColor("Button.background"));   
         }   
  
         //renderButton.setText( (value == null) ? "Ver Histórico" : value.toString() );  
         renderButton.setSelected(false);            
         return renderButton;   
     }   
  
     public Component getTableCellEditorComponent(   
         JTable table, Object value, boolean isSelected, int row, int column)   
     {     
         editButton.setSelected(true); 
         return editButton;   
     }   
  
     public Object getCellEditorValue()   
     {   
         return editButton;   
     }   
  
     public void actionPerformed(ActionEvent e)   
     {   
         fireEditingStopped();   
         System.out.println( e.getActionCommand() + " : " + table.getSelectedRow());   
     }
     
}
F

Não tenho muito conhecimento da AbstractCellEditor porque nunca a implementei, mas o exemplo que eu dei é pra implementações de AbstractTableModel.

Você está usando DefaultTableModel na sua tabela?
Se sim, leia o link na minha assinatura e depois resolva o problema fazendo o que eu te indiquei no primeiro post.
É muito fácil resolver o seu problema, mas desde que você tenha seu próprio modelo. Caso contrário, terá que bater cabeça mesmo pra poder solucionar o problema…

M

vlew cara muito obrigado ae, vou verificar tudo isso ae.

Criado 2 de maio de 2012
Ultima resposta 3 de mai. de 2012
Respostas 4
Participantes 2