Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/08/2008, 02:12
abulon
 
Fecha de Ingreso: diciembre-2006
Mensajes: 127
Antigüedad: 18 años, 1 mes
Puntos: 1
Información Respuesta: JCheckBox en JTable

You looked at the page Laura_morgar ....http://ji.ehu.es/LMAlonso/SW/java/Bi...#editrenderapi

check this code:

Código PHP:

import java
.awt.Color;
import java.awt.Component;
 
import javax.swing.AbstractCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellEditor;
 
/**
 * @author cwickesser
 * Created on Sep 29, 2004
 */
public class TableTest extends JPanel {
 
    public 
TableTest() {
        
init();
    }
    
    private 
void init() {
        
// test data
        
Object[] columns = new Object[] {"Select""Name"};
        
Object[][] data = new Object[2][2];
        
data[0][0] = new Boolean(true);
        
data[0][1] = "John";
        
data[1][0] = new Boolean(false);
        
data[1][1] = "Bill";
        
        
MyTableModel model = new MyTableModel(datacolumns);
        
JTable table = new JTable(model);
        
        
table.getColumnModel().getColumn(0).setCellEditor(new CheckBoxCellEditor());
        
        
JScrollPane tableScroller = new JScrollPane(table);
        
        
add(tableScroller);
    }
    
    private class 
MyTableModel extends AbstractTableModel {
        
        private 
Object[][] data;
        private 
Object[] columns;
        
        public 
MyTableModel(Object[][] dataObject[] columns) {
            
this.data data;
            
this.columns columns;
        }
        
        public Class 
getColumnClass(int columnIndex) {
            return 
data[0][columnIndex].getClass();
        }
        public 
int getColumnCount() {
            return 
columns.length;
        }
        public 
int getRowCount() {
            return 
data.length;
        }
        public 
Object getValueAt(int rowIndexint columnIndex) {
            return 
data[rowIndex][columnIndex];
        }
        
        
// only allow the first column to be editable, this is the column
        // with our checkboxes
        
public boolean isCellEditable(int rowIndexint columnIndex) {
            return (
columnIndex == 0);
        }
    }
    
    private class 
CheckBoxCellEditor extends AbstractCellEditor implements TableCellEditor {
        protected 
JCheckBox checkBox;
        
        public 
CheckBoxCellEditor() {
            
checkBox = new JCheckBox();
            
checkBox.setHorizontalAlignment(SwingConstants.CENTER);
            
checkBox.setBackgroundColor.white);
        }
        
        public 
Component getTableCellEditorComponent(
                
JTable table
                
Object value
                
boolean isSelected
                
int row
                
int column) {
 
            
checkBox.setSelected(((Boolean) value).booleanValue());
            
            
Component c table.getDefaultRenderer(String.class).getTableCellRendererComponent(tablevalueisSelectedfalserowcolumn);
            if (
!= null) {
                
checkBox.setBackground(c.getBackground());
            }
            
            return 
checkBox;
        }
        public 
Object getCellEditorValue() {
            return 
Boolean.valueOf(checkBox.isSelected());
        }
    }
    
    public static 
void main(String[] args) {
        
JFrame f = new JFrame();
        
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        
TableTest test = new TableTest();
        
        
f.getContentPane().add(test);
        
f.setSize(300300);
        
f.show();
    }


Greetings!!