java - make - Cómo configurar jcombobox en un jtable para obtener una expresión
jtable java (0)
No puedo configurar un jtable con jcombobox, he visto varias muestras pero sin éxito. Tengo una tabla con 3 columnas y Jcombobox para cada celda. En el primer y último JCombobox hay Sports y en el central a Criteria.
Para cada fila, debo usar los valores de la columna 3 para hacer una Expresión` (Deporte s1, Criterio c, Deporte s2);
Intenté utilizar un modelo de tabla personalizado, pero con jcombobox no sé cómo configurarlo
@Override
public Object getValueAt(int arg0, int arg1) {
// TODO Auto-generated method stub
return null;
}
y
public Object setValueAt(int arg0, int arg1) {
// TODO Auto-generated method stub
return null;
}
para obtener y establecer los valores con selecciones de JCombobox.
`
Yo uso este modelo para implementar mi Tabla:
class MyTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
int numSports = DataSavedSports.loadNumeroSports();
private final List<Sport> objects = DataSavedSports
.loadListSports();
private final String[] columnNames = { "Name Sport 1", "Criteria",
"Name Sport 2" };
private final Class<?>[] metaModell = new Class[] { String.class,
Integer.class };
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return objects.size();
}
@Override
public String getColumnName(int col) {
return columnNames[col];
}
private Sport getRow(int row) {
return objects.get(row);
}
@Override
public Class<?> getColumnClass(int c) {
if (c < metaModell.length)
return metaModell[c];
return Object.class;
}
@Override
public boolean isCellEditable(int row, int col) {
return true;
}
public List<Sport> getJobs() {
return objects;
}
public void addRow(Sport v) {
this.objects.add(v);
fireTableDataChanged();
}
@Override
public Object getValueAt(int arg0, int arg1) {
// TODO Auto-generated method stub
return null;
}
}
Los métodos que he usado para configurar el Jcombobox son algo como esto
public void setColumnSports1(JTable table, TableColumn ColumnLav1) {
// Set up the editor for the sport cells.
final List<Sport> ListSports = DataSavedSports.loadListSports();
final JComboBox comboBox1 = new JComboBox();
for(Sport l : ListSports){
comboBox1.addItem(l.getIdSport());
}
comboBox1.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent ie){
String str = (String)comboBox1.getSelectedItem();
System.out.println("TESTTTT"+str);
}
});
ColumnLav1.setCellEditor(new DefaultCellEditor(comboBox1));
// Set up tool tips for the sport cells.
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setToolTipText("Click for combo box");
ColumnLav1.setCellRenderer(renderer);
}
PD
Debo utilizar la tabla en un JFrame y obtener los datos del elemento Jcombobox seleccionado, por lo que la falta de la herencia múltiple es otro problema debido a la anulación de varios componentes.