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??
I et inbound callcenter, hvor identiteten på den, der ringer ind, skal bekræftes, kan kontrollen nu foregå i telefonkøen. Det understøtter fem centrale KPI'er for callcentre.
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.