Wie kann ich feststellen, welche Zelle in einer JTable ausgewählt wurde?
Ich habe eine JTable
in eine GUI und ich will eine Zahl zurückgeben, basierend auf dem Wert der Zelle, die ein Nutzer auf. Dies ist der code:
ListSelectionModel newmodel = mytable.getSelectionModel();
newmodel.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
int row = mytable.getSelectedRow();
int column = mytable.getSelectedColumn();
int cell = getNewNum();
datefield.setText(String.valueOf(cell));
}
});
Ich habe ein paar Probleme mit diesem. Erstens diese Methode macht meine Tabelle bearbeitet werden. Bevor ich mit dieser Methode konnte ich nicht Bearbeiten Sie die Tabelle, aber jetzt kann ich Einträge löschen. Ich sah in der API, aber ich weiß nicht, warum das so ist. Zweitens, wenn ich auf eine Zelle in Zeile 3 sagen, und dann Klick ich auf eine andere Zeile in Zelle 3, kein Ereignis registriert wird. Wie kann ich ein Ereignis aus, durch klicken in eine Zelle der aktuell ausgewählten Zeile?
- Hinzufügen eines ListSelectionListener wird NICHT machen Sie Ihre Tabelle Bearbeiten. Bearbeitbarkeit einer Zelle wird gesteuert durch die isCellEditable (...) - Methode des TableModel oder die JTable selbst.
- möglich, Duplikat der Wie kann ich überprüfen, welche JTable Zelle wurde geklickt/ausgewählt?
InformationsquelleAutor | 2011-02-18
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine gängige Methode ist, auf den Punkt, wo der Benutzer geklickt hat durch die Veranstaltung:
Hier ist eine zweite option, über Auswahl-Modus:
Wenn du gehst:
Dann deine JTable nicht editierbar.
Schließlich um den Wert, den Sie wollen, Sie brauchen nur zu rufen
getValueAt(row,col)
Ihrer JTable Modell, oder erhalten Sie den Inhalt so:getSelectedRow
Gegenzug die pre-selection oder post-Auswahl Wert? d.h., wird dieMouseListener#mouseClicked
- Ereignis ausgelöst, bevor die änderung der Markierung wird gemacht?jTable1.getModel().getValueAt
zurück, Modell-Wert, aber nichtgetSelectedRow()
Gegenzug die Zeile aus dem Modell, oder die Zeile aus der view?