Pregunta

Quiero añadir cuadro combinado en una célula de JTable.

model=new DefaultTableModel(data,col);
JTableHeader head=new JTableHeader();
head.setBackground(Color.BLUE);
table=new JTable(model);
table.add(head);
JComboBox combo = new JComboBox();
combo.addItem("Names");
combo.addItem("Antony");
combo.addItem("Victor");
combo.addItem("Ramkumar");
table.add(combo);

Pero no puedo conseguir el cuadro combinado en la célula. ¿Es posible cuadro combinado conjunto?

¿Fue útil?

Solución

Es necesario que establezca la TableCellEditor del JTable. Es mejor buscar la Tutoriales de Java, pero aquí hay una breve explicación.

JTable utiliza tres clases principales de trabajo:

1) TableModel: Su función es decir el número de filas y columnas de la tabla tiene y para servir a los datos de la tabla, es métodos principales son getValue (fila, columna) y setValue (valor, fila, columna). Y eventos de fuego para notificar a los repintados JTable.

2) TableCellRenderer: su propósito principal es dibujar los componentes de las células del JTable. Este componentes sólo están pintadas: NO TRABAJO! si se dibuja un JComboBox que no desplegate si hace clic en él o si se dibuja un JCheckBox se hace ningún Active / desactive.

3) TableCellEditor: su propósito principal es dibujar un componente dentro de un JTableCell para editar el valor de la celda. Recibe sucesos y decidir cuándo comenzar la edición, luego de getTableCellEditorComponent método se llama para devolver el componente de edición. El componente devuelto tiene que eventos de lanzamiento para que el TableCellEditor sabe cuándo parar la edición y obtener el valor y utilizarlo para llamar a la TableModel.setvalue ... o cancelar la edición.

Así que para mostrar JComboBox en un JTable debe crear su propia TableCellEditor, no es una tarea fácil si no lo ha hecho antes.

Otros consejos

Tome alook en este de Java tutorial y la búsqueda en esta página para "Uso un cuadro combinado como Editor "

Prueba esto:. Su trabajo para me..click en la celda para ver el cuadro combinado

 private void comboloader() {
        try {
            TableColumn gradeColumn = jTable1.getColumnModel().getColumn(0);
            JComboBox comboBox = new JComboBox();

            comboBox.removeAllItems();

            try {
                comboBox.addItem("Item 1");
                comboBox.addItem("Item 2");
                comboBox.addItem("Item 3");

            } catch (NullPointerException e) {
            } catch (Exception e) {
                e.printStackTrace();
            }
            gradeColumn.setCellEditor(new DefaultCellEditor(comboBox));
        } catch (Exception e) {
        }
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top