19. januar 2006 - 17:16Der er
18 kommentarer og 2 løsninger
Opdatere JTable
Hej Eksperter,
nu har jeg forsøgt i laang tid at få min JTable til at opdatere men uden held.
Jeg har følgende filer:
fill - implement observer ------------------------- -JTable table = new JTable(new tableModel()); -kører update void på følgende metode i fil2
fil2 - extends observable ------------------------- -kører en løkke der sætter nye værdier ind i JTable ved brug af setValueAt fra tableModel
tableModel - extends AbstractTableModel --------------------------------------- indeholder setValueAt som bruger fireTableCellUpdated(row, col) som jeg troede sørgede for at JTable var opdateret.
MEN, den bliver ikke opdateret! Hvad gør jeg galt??
Det er ikke nødvendigt at køre opdateringen i egen tråd. Fordelen ved at køre det i egen tråd er hvis du har en meget stor opdatering, så låser gui'en ikke.
public class JTableTest extends JFrame { private TableAgentModel model = new TableAgentModel(); private JTable table = new JTable (model); private int index = 0;
public JTableTest() { this.setSize(400, 400); this.getContentPane().add(new JScrollPane (table), BorderLayout.CENTER);
JButton add = new JButton ("Tilføj"); add.addActionListener(new ActionListener() { public void actionPerformed (ActionEvent e) { model.setValueAt("Hej med dig", 0, 0); } });
public class JTableTest extends JFrame { private TableAgentModel model = new TableAgentModel(); private JTable table = new JTable (model); private int index = 0;
public JTableTest() { this.setSize(400, 400); this.getContentPane().add(new JScrollPane (table), BorderLayout.CENTER); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Thread thread = new Thread() { public void run() { try { while (true) { sleep (1000); for (int i = 0; i<model.getColumnCount(); i++) for (int j = 0; j<model.getRowCount(); j++) model.setValueAt(new java.util.Date(), j, i); }
Sorry - hvis jeg var lidt hård, men den første linie i din kom: 18:59:09 tændte mig vist lidt, og når jeg nu ved du kan - ja så tænkte jeg hvad har han gang i.
Men tilbage til sagen, prøv at ændre løkken, gør det nemmere at se at opdateringen rent faktisk kører løbende.
while (true){ for (int i = 0; i<1000000; i++) model.setValueAt("Hej med dig " + i,0,1); }
Jeg overså i første omgang at det kørte i en løkke - min fejl ditto...
Synes godt om
Ny brugerNybegynder
Din løsning...
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.