se sto scrivendo in una cella di una jtable, dando invio oppure passando in un'altra cella, come posso far scattare un evento che mi faccia per esempio un System.out.print("prova")?
thanx
nh
se sto scrivendo in una cella di una jtable, dando invio oppure passando in un'altra cella, come posso far scattare un evento che mi faccia per esempio un System.out.print("prova")?
thanx
nh
Intanto ti faccio notare che ogni "editor" (che implementa TableCellEditor) ha il metodo addCellEditorListener() per registrare un CellEditorListener che è in grado di notificare il cancellamento o la terminazione della fase di editing.Originariamente inviato da newhook
se sto scrivendo in una cella di una jtable, dando invio oppure passando in un'altra cella, come posso far scattare un evento che mi faccia per esempio un System.out.print("prova")?
Quindi potresti prendere il TableCellEditor per la/le colonne che ti interessano e registrare quel listener.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
le trovo complesse le swing...ma le devo capire bene.
sto facendio questo:
codice:public class Prova implements CellEditorListener { @Override public void editingCanceled(ChangeEvent e) { System.out.println("sta succedendo qualcosa 2"); // TODO Auto-generated method stub } @Override public void editingStopped(ChangeEvent e) { System.out.println("sta succedendo qualcosa 3"); // TODO Auto-generated method stub } } . . . TableCellEditor tce = table.getCellEditor(); tce.addCellEditorListener(new Prova());
cosa mi dovrei aspettare? così mi da errore
nh
getCellEditor() di JTable restituisce l'editor "attivo" in quel momento. Ma in quel punto della inizializzazione .... non c'è un editor attivo!!!Originariamente inviato da newhook
TableCellEditor tce = table.getCellEditor();
cosa mi dovrei aspettare? così mi da errore
Usa l'altro: getCellEditor(int row, int column)
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Grande! così mi funziona e mi stampa "sta succedendo qualcosa 3" ed è ok ma non capisco getCellEditor(0,0).codice:TableCellEditor tce = table.getCellEditor(0,0); tce.addCellEditorListener(new Prova());
in questo modo mi aspettavo che "sta succedendo qualcosa 3" lo facesse solo per la cella 0,0 invece lo fa per tutte.
cosa succede?
Grazie e scusa
![]()
Alla base di tutto c'è una "mappatura" in JTable tra un tipo di dato e un editor. Per tipo di dato intendo dire un java.lang.Class. Ci sono già una serie di mappature predefinite.Originariamente inviato da newhook
in questo modo mi aspettavo che "sta succedendo qualcosa 3" lo facesse solo per la cella 0,0 invece lo fa per tutte.
In DefaultTableModel ad esempio getColumnClass() ritorna per default sempre Object.class indipendentemente dalla colonna. Pertanto tutte le righe/colonne useranno lo stesso identico oggetto editor.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet