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?
jCheckBox em jTable
M
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