que han desarrollado una costumbre JTableModel básica de la siguiente maneracorrectamente obteniendo datos de un (ordenados) JTable
public class CustomTableModel extends DefaultTableModel {
List<MyClass> data;
public CustomTableModel(List<MyClass> data) {
this.data = data;
}
public Class<?> getColumnClass(int columnIndex) {
return MyClass.class;
}
public MyClass getValueAt(int rowIndex, int columnIndex) {
return data.get(rowIndex);
}
// ...
}
entonces utilizar una costumbre JTableCellRenderer básica de la siguiente manera
public class CustomTableCellRenderer extends JLabel implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
MyClass myClass = (MyClass)value;
lbl.setText(myClass.getString());
return this;
}
}
También tengo un JPanel personalizados que muestra diversa información de la siguiente
public class MyPanel extends JPanel {
private MyClass myClass;
public MyPanel(MyClass myClass) {
// initialize components
}
public setMyClass(MyClass myClass) {
this.myClass = myClass;
updateFields();
}
private void updateFields() {
this.fieldString.setText(myClass == null ? "" : myClass.getString());
// ...
}
}
Por último, utilizo una tabla a la lista d mi ata y el panel personalizado para mostrar los detalles de los datos seleccionados.
public class JCustomFrame extends JFrame {
public JCustomFrame(List<MyClass> data) {
// ...
JTable table = new JTable(new CustomTableModel(data));
table.setDefaultRenderer(MyClass.class, new CustomTableCellRenderer());
}
}
Lo que estoy tratando de lograr es conseguir los MiClase seleccionados de la tabla , independientemente del orden.
Intenté ListSelectionListener pero los métodos no devuelven nada más que los índices seleccionados. Incluso si tengo el índice, si la tabla está ordenada, mi modelo no es tan sofisticado y devolverá el objeto equivocado.
Usted puede obtener un JTable para visualizar datos ordenados de manera diferente a partir del modelo subyacente? ¿Cómo se ordena y cuándo se introdujo? –
@Carl Smoticz: desde Java 1.6 creo – OscarRyz