Ich habe eine JTable
(Master), zu dem ich eine ListSelectionListener
zu fangen, wenn eine Zeile ausgewählt ist, und füllen Sie eine andere JTable
(Detail) nach der ausgewählten Zeile. Nun haben sich einige Anforderungen geändert und wenn die Bedingungen erfüllt sind, wenn der Benutzer in eine andere Zeile klickt, sollte ich eine JOptionPane
mit JA/NEIN Optionen anzeigen, und nur wenn JA geklickt wird, dann kann die neue Zeile ausgewählt werden. Wie kann ich das erreichen? Soll ich immer ListSelectionListener
verwenden? Ich glaube nicht, da es erst nach der Auswahl ausgelöst wird.JTable: Warten auf Zeile nach Benutzereingabe ausgewählt werden
Antwort
ja, sicher
table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
public void valueChanged(ListSelectionEvent event) {
// do some actions here, for example
// print first column value from selected row
System.out.println(table.getValueAt(table.getSelectedRow(), 0).toString());
}
});
, wenn der Benutzer klickt in einer anderen Zeile,
Was ist, wenn der Benutzer verwendet, um die Auf-/Ab-Pfeiltaste zu einer anderen Zeile zu bewegen?
Das Standardverhalten in beiden Fällen ist die automatische Auswahl der Zeile.
Sie können möglicherweise die changeSelection(...)
-Methode der JTable überschreiben. Ich glaube, das ist die Methode, die von der Maus- oder Tastaturlogik aufgerufen wird, um die Zeilenauswahl zu ändern.
Sie würden also Ihre Logik hinzufügen, um das Optionsfeld anzuzeigen, und dann, wenn "Ja" ausgewählt ist, würden Sie super.changeSelection(...)
aufrufen.
Allerdings würde ich es frustrierend finden zu versuchen, die Tastatur zu verwenden, um in der Tabelle nach unten zu scrollen, wenn dieser Optionsbereich immer wieder auftaucht. Denken Sie daran, eine Benutzeroberfläche zu entwickeln, die sowohl Maus als auch Tastatur effektiv unterstützt.
- 1. Warten auf Benutzereingabe
- 2. JTable, wenn eine Zeile ausgewählt ist
- 3. Warten auf Benutzereingabe mit einer Zeitüberschreitung
- 4. JTable: Keine ausgewählte Zeile
- 5. Android: Warten auf Benutzereingabe von Dialog?
- 6. Javascript verschachtelte Schleifen warten auf Benutzereingabe
- 7. Warum cin.get nur einmal auf Benutzereingabe warten
- 8. Warten auf Benutzereingabe in separaten Thread
- 9. Wie können andere Zeilen in einer JTable angezeigt werden, wenn eine Zeile ausgewählt ist?
- 10. Scrollen Sie zur ausgewählten Zeile für JTable
- 11. Nur eine Zeile editierbar auf JTable
- 12. Checkboxen werden unsichtbar, wenn igGrid Zeile ausgewählt
- 13. JTable Sortierung - Auswahl einer Zeile
- 14. JTable wiederholt eine Zeile
- 15. JTable Maus Zuhörer auf Zeile Beispiel
- 16. JTable-Fokus auf gesamte Zeile statt Zelle
- 17. Make auf Submit-Ereignis warten auf Benutzereingabe? JS
- 18. Tabelle Echo für Zeile basierend auf Benutzereingabe
- 19. Python3 - Drucken Benutzereingabe auf neue Zeile
- 20. JTable Währungsausgabe und Zeile nächste Zeile
- 21. Anzeige Formview auf Gridview Zeile ausgewählt
- 22. SQL Server: Warten auf neue Zeile
- 23. Zeile aus JTable entfernen "IndexOutOfBoundsException"
- 24. Können @PropertySources nach Spring-Profil ausgewählt werden?
- 25. Verschieben einer Zeile in jTable
- 26. jTable Kontrollkästchen und Zeile entfernen
- 27. Wie Zeile in JTable hinzufügen?
- 28. Zeile einfügen basierend auf Benutzereingabe in mehreren Blättern
- 29. Kann man nach Benutzereingabe in derselben Zeile drucken?
- 30. Eine neue Zeile in jTable automatisch einfügen, während Daten in der letzten Zeile eingegeben werden
Vielen Dank für Ihre Antwort, aber ich fürchte, das ist nicht was ich brauche, denn wenn valueChanged() ausgelöst wird, wurde die neue Zeile bereits gesetzt, unabhängig davon, ob der Benutzer ja oder jetzt im JOptionPane geklickt hat. Stattdessen brauche ich es wartet –
ahh, sr über mein Missverständnis, sollten Sie einen TableModelListener wie beschrieben https://docs.oracle.com/javase/tutorial/uiswing/components/table.html#modelchange hinzufügen. auch, in Ihrem Hörer, sobald Sie den Wert der anderen Zelle Werte programmatisch aktualisiert haben, müssen Sie model.fireTableCellUpdated aufrufen, um swing über die Änderungen zu wissen https://docs.oracle.com/javase/6/docs /api/javax/swing/table/AbstractTableModel.html#fireTableCellUpdated%28int,%20int%29 –