12. marts 2006 - 01:25Der er
9 kommentarer og 1 løsning
Ændring af JTable Listener
Hej
Jeg har lavet en jTable med comboboxe i hver celle. Trykker jeg på en knap bliver værdien, der fremstår øverst i comboboxene talt sammen. Jeg ønsker at lægge en lytter på tabellen, så disse værdier automatisk opdateres, når jeg ændre i comboboxene.
Lytteren jeg har lavet til nu, ser sådan ud:
ListSelectionModel selectionModel = jTable4.getSelectionModel(); selectionModel.addListSelectionListener( new ListSelectionListener() { public void valueChanged( ListSelectionEvent event ) { getPanel5(); } });
Den kalder en metode "getPanel5()"; som også knappen kalder, der lægger værdierne sammen.
Problemet er nu at en ListSelectionListener, reagere i det samme jeg trykker et sted på tabellen, og venter derfor ikke til at jeg har valgt en ny værdi i en combobox. Kan man derfor implementere en mousereleased Listener i forbindelse hermed???
....
Er der desuden nogen mulighed for at tilgå en actionEvent metode udenom lytteren???
kan det være et opdateringsproblem der kan løses ved at kalde fireTableDataChanged() på din TableModel efter du har kørt getPanel5() i din listener????
Hvis jeg kender firePropertyChanged()ret...(regner med at det er den du mener) , så skal jeg ikke sætte disse lyttere på tabellen, men på de komponenter (og der ligger mange i panel5), comboboxene skal ændre på. Så umiddelbart virker det som en uoverskuelig fremgangsmåde. Det vil simpelthen blive for rodet, på baggrund deraf Må der være en simplere løsning.
Notifies all listeners that all cell values in the table's rows may have changed. The number of rows may also have changed and the JTable should redraw the table from scratch. The structure of the table (as in the order of the columns) is assumed to be the same.
See Also: TableModelEvent, EventListenerList, JTable.tableChanged(TableModelEvent)
Det er en metode der tilhører AbstractTableModel som din tablemodel arver fra. Du kan evt. prøve at kigge på de andre opdateringsmetoder AbstractTableModel tilbyder
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.