L
Louis2
Gast
Hallo,
ich habe eine JTable mit eine beliebigen Anzahl an Spalten (kann festgelegt werden...). Beim eingeben der Daten von der DB in die JTable werde die Zeilen alphanumerisch nach der CustomerNo sortiert. Wenn ich nun Zeile 3 markiere erscheint die Meldung "Löschen von Zeile 3...". Alles ok.
Wenn ich nun aber alle Zeilen nach einer anderen Spalte sortiere (z.B. CustomerName), und dann wieder auf eine Zeile klicke, erscheint zwar die richtige Nummer der Zeile (z.B. "Löschen von Zeile 5..."), aber es wird nicht die Zeile der neuen Sortierung an Position 5 gelöscht sondern immer die Zeile an Position 5 vor der Sortierung. Also gibt es ein Aktualisierungsproblem. Woran liegt es ? Kann man irgendwie ein refresh vom model machen?
ich habe eine JTable mit eine beliebigen Anzahl an Spalten (kann festgelegt werden...). Beim eingeben der Daten von der DB in die JTable werde die Zeilen alphanumerisch nach der CustomerNo sortiert. Wenn ich nun Zeile 3 markiere erscheint die Meldung "Löschen von Zeile 3...". Alles ok.
Wenn ich nun aber alle Zeilen nach einer anderen Spalte sortiere (z.B. CustomerName), und dann wieder auf eine Zeile klicke, erscheint zwar die richtige Nummer der Zeile (z.B. "Löschen von Zeile 5..."), aber es wird nicht die Zeile der neuen Sortierung an Position 5 gelöscht sondern immer die Zeile an Position 5 vor der Sortierung. Also gibt es ein Aktualisierungsproblem. Woran liegt es ? Kann man irgendwie ein refresh vom model machen?
Code:
model = new DefaultTableModel (0,0);
TableSorter sorter = new TableSorter(model); // Sortier-Klasse
table = new JTable(sorter)
{
public boolean isCellEditable(int rowIndex, int vColIndex)
{
return false;
}
};
sorter.setTableHeader(table.getTableHeader());
getContentPane().add(new JScrollPane(table), BorderLayout.SOUTH);
columnModel = table.getColumnModel();
table.getTableHeader().setReorderingAllowed(false);
table.addMouseListener( new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
int mask = e.getModifiers();
if ( (mask&InputEvent.BUTTON1_MASK) == mask)
{
// Code for left mouse button
sendButton.setEnabled(false);
table.setRowSelectionAllowed(true);
table.setColumnSelectionAllowed(false);
int selectedRow = table.getSelectedRow();
int ret = JOptionPane.showConfirmDialog(EmailClient.this, "Row "
+ (selectedRow+1) + " will be deleted, please confirm!", "Deletion validation",
JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE); // Diese Meldung stimmt
if (ret == JOptionPane.YES_OPTION)
model.removeRow(selectedRow); // hier wird die Zeile gelöscht, aber die Zeile vor der Sortierung
int numberRows = table.getRowCount();
valueLabel.setText(" Number of rows: " + numberRows);
valueProg.setText("x of x Emails");
return;
}