Avatar billede langkiller Nybegynder
08. december 2012 - 20:39 Der er 3 kommentarer og
1 løsning

Tråd der skal opdaterer en liste med data fra db

Har en liste med data fra min mySQL database, samt tilhørende jbutton med actionlistener i hver række. Ville gerne have den til at opdaterer sig selv hvert 2. sekund, hvilket jeg har prøvet at løse vha. en Thread, men det lader til at der er noget galt for det er et lidt tilfældigt antal rækker der bliver skrevet ud til guien hver gang jeg køre den. Her er min kode indtil videre:


getKundeOrdrer = new Thread(new Runnable() {
                public void run() {
                   
                    try {       
                        while(true) {
                           
                                    // Do-while loop der koerer igennem resultsettet for
                                    // at udskrive alle data om kundeordrerne
                                    do {
                                            result                       = kaldSQL.alleKundeordrer(connectDB); // resultset henter fra databasen i KaldSQ klassen
                                            final int ordreID           = result.getInt(1); // id for kundeordren
                                            String kundeCVR           = result.getString(2); // kundens cvr nummer
                                            int ordreStatus           = result.getInt(3); //Ordrestatus (int)
                                           
                                                // omskriver ordrestatus (int) til en tekststreng
                                                if (ordreStatus == 0) {
                                                    ordreStatusString  = "Bestilt";
                                                } else if (ordreStatus == 1) {
                                                    ordreStatusString  = "Leveret";
                                                } else {
                                                    ordreStatusString  = "Fejl";
                                                }                   
                       
                                            // Ny knap til visning af af kundeordren for hver gang loopet kører
                                            gotoKundeordre                 = new JButton("Se kundeordre");
                                            gotoKundeordre.setPreferredSize(new Dimension(120, 25));
                                               
                                            String bestillingsDato      = result.getString(4); // dato for bestilling af ordren
                                            String leveringsDato       = result.getString(5); // dato for levering af ordren
                                           
                                           
                                                        // ActionListener til hver enkel knap paa listen
                                                        gotoKundeordre.addActionListener(new ActionListener(){
                                                            public void actionPerformed(ActionEvent e) {
                                                                VisKundeordre visOrdre = new VisKundeordre(); // Objekt VisKundeOrdre oprettes
                                                                visOrdre.visKundeordre(ordreID);
                                                               
                                                            }
                                                        });
                                           
                                            // Indsætter Jlabel med oplysninger om en kundeordre til listen
                                            midtPanel.add(new JLabel("<html><table style=\"width: 360px;\">" +
                                                                    "<tr><td width=\"60\">"+ordreID+"</td><td width=\"90\">"+kundeCVR+"</td><td width=\"90\">"+ordreStatusString+"</td><td>"+bestillingsDato+"</td><td>"+leveringsDato+"</td></tr>" +
                                                                    "</table></html>"));
                                           
                                            // Indsætter den unikke JButton udfra de tilhørende oplysninger
                                            midtPanel.add(gotoKundeordre);
                                           
                                    } while (result.next());
                                   
                            Thread.sleep(0);
                        }
                    } catch (SQLException | InterruptedException e) {
                        e.printStackTrace(); // Udskriver fejl hvis der er SQLException
                    }
               
                }
            });
            getKundeOrdrer.start();


Kan ikke hitte ud af hvad der er galt, nogle forslag til ændringer?
Avatar billede arne_v Ekspert
11. december 2012 - 04:36 #1
Var det monstro ikke bedre med en JTable til data?
Avatar billede langkiller Nybegynder
22. februar 2013 - 00:19 #2
havde fuldstændig glemt denne tråd. Nå, da du er den eneste der har skrevet til den kan du jo få points for den. Smid et svar hvis du vil. Ellers lægger jeg bare selv et
Avatar billede arne_v Ekspert
22. februar 2013 - 01:22 #3
Jeg har vist ikke bidraget med nok til at fortjene point her.
Avatar billede langkiller Nybegynder
22. februar 2013 - 14:41 #4
okay så lukker jeg den da bare selv :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester