2010-05-29 7 views
5

Ich habe einen Mausklicks Listner zu meinem JTable hinzugefügt, wenn ich die Zeile doppelklicke, wird ein Fenster entsprechend geöffnet.JTable Listener Problem

jTable.addMouseListener(new java.awt.event.MouseAdapter() { 
public void mouseClicked(java.awt.event.MouseEvent e) { 
double amount = Double.parseDouble(jTable.getValueAt(getSelectedRow(), 4).toString()); 
String remarks = jTable.getValueAt(getSelectedRow(), 3).toString(); 
String transactionID = jTable.getValueAt(getSelectedRow(), 1).toString(); 
     new EditFrame(...) 
} 
}); 

Dieser Code ich zum Abrufen der Zeile Zeile ausgewählt.

public int getSelectedRow() { 
jTable.getSelectionModel().addListSelectionListener(
new ListSelectionListener() { 
public void valueChanged(ListSelectionEvent event) { 
    int viewRow = jTable.getSelectedRow(); 
    selectedRow = viewRow; 
    System.out.println(viewRow); 
} 
}); 
return selectedRow; 
} 

In meinem Fall wurde mir klar, als ich die zweite Zeile in dem ersten Mal angeklickt, die ich für SelectedRow null erhalte, nur wenn ich erste Zeile dann die zweite Zeile auswählen, ich die richtigen Daten dann erhalten kann. Und wenn ich den Maushörer entfernt habe, ist das Problem dann gelöst. Liegt es daran, dass ich am Mausklick-Listener etwas falsch mache?

Antwort

4

Wenn Sie nur wissen möchten, auf welche Zeile geklickt wurde, brauchen Sie den Auswahllistener nicht. Verwenden Sie einfach:

table.rowAtPoint(); 
+0

Wie würden Sie das verwenden? –

-1

Sie tun es in die falsche Richtung. Entfernen Sie Ihre aktuelle getSelectedRow() Methode vollständig und versuchen Sie nie, etwas ähnliches zu kodieren. Hier ist eine bessere Version:

jTable.addMouseListener(new java.awt.event.MouseAdapter() { 
public void mouseClicked(java.awt.event.MouseEvent e) { 
int selectedRow = jTable.getSelectedRow(); 
double amount = Double.parseDouble(jTable.getValueAt(selectedRow, 4).toString()); 
String remarks = jTable.getValueAt(selectedRow, 3).toString(); 
String transactionID = jTable.getValueAt(selectedRow, 1).toString(); 
     new EditFrame(...) 
} 
}); 
+4

-1 für unnötig unhöflich. – Pops