Avatar billede saxtus Nybegynder
15. december 2003 - 21:43 Der er 26 kommentarer og
1 løsning

Databese og jList

Jeg er i gang med at lave et projekt, men jeg har problemer med en jList

Her er den del af koden der driller

        filmList.setFont(new java.awt.Font("Verdana", 1, 14));
            try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                Connection forb = DriverManager.getConnection("jdbc:odbc:projekt");
                stmt = forb.createStatement();
                ResultSet rs = stmt.executeQuery("select filmNavn from filmkartotek order by filmNavn");
                while (rs.next()) {
                  filmList.addItem(rs.getString(2));
               
                   
                }   
            }
            catch (SQLException e) {
                JOptionPane.showMessageDialog(null, "Der er opstået en databasefejl","SQL-fejl",JOptionPane.ERROR_MESSAGE);
            }
            catch (Exception e) {
                JOptionPane.showMessageDialog(null, "Der er opstået en uventet fejl","Kørselsfejl",JOptionPane.ERROR_MESSAGE);
            }
       
       
        filmH.add(filmList, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 90, 200, 200));

men den skriver at der er fejl i
filmList.addItem(rs.getString(2));
og at den ikke vil ha en addItem.

er der nogen der ved hvad jeg kan gøre for at få det til at virke, og også hjælpe med en update funktion til listen
Avatar billede arne_v Ekspert
15. december 2003 - 21:46 #1
Nu er jeg ikke nogen ørn til Swing, men jeg troede at I tilføjede
data til den bagvedliggende data strukor og så bad JList om at opdatere ?
Avatar billede _carsten Nybegynder
15. december 2003 - 21:54 #2
JList har ingen metode som hedder addItem(String item)
det List, altså AWT
Avatar billede saxtus Nybegynder
15. december 2003 - 21:57 #3
jeg har selvfølgelig en anden mulighed og det er at lave det i en comboBoxn men synes at det andet vil se bedre ud.
Har set et eller andet med at smide resultatet i en vector, men det kunne jeg ikke lige hitte ud af.
Avatar billede _carsten Nybegynder
15. december 2003 - 21:59 #4
Et eksempel

String[] a = {"abe", "kat", "hund"};
jList1.setListData(a);
Avatar billede _carsten Nybegynder
15. december 2003 - 22:00 #5
Og du kan selvfølge også bruge en Vector

Og derefter filmList.setListData(a);
Avatar billede arne_v Ekspert
15. december 2003 - 22:02 #6
Jeg tror muligvis at det er opdatering af enkelt elementer og
notificering af Swing om det han leder efter.

Er det ikke "the MVC way" ?
Avatar billede saxtus Nybegynder
15. december 2003 - 22:02 #7
hvis du omformer min kode så den kommer til at passe, så er pointene.
Jeg kan nemlig ikke lige se hvordan du mener
Avatar billede _carsten Nybegynder
15. december 2003 - 22:03 #8
Du får den lige fra bunden af

        java.util.Vector v = new java.util.Vector();
        v.addElement("ABE");
        v.addElement("KAT");
        v.addElement("HUND");
       
        filmList.setListData(v);
Avatar billede _carsten Nybegynder
15. december 2003 - 22:05 #9
java.util.Vector v = new java.util.Vector();
     
filmList.setFont(new java.awt.Font("Verdana", 1, 14));
            try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                Connection forb = DriverManager.getConnection("jdbc:odbc:projekt");
                stmt = forb.createStatement();
                ResultSet rs = stmt.executeQuery("select filmNavn from filmkartotek order by filmNavn");
                while (rs.next()) {


                  v.addElement(rs.getString(2));

               
                   
                }   
            }




// og til slut

filmList.setListData(v);
Avatar billede saxtus Nybegynder
15. december 2003 - 22:11 #10
tester det lige
Avatar billede _carsten Nybegynder
15. december 2003 - 22:12 #11
Jeg kan ikke lige finde ud af om du er med på ideen, så nu får du revl og krat

Det er ren ctrl+C og ctrl+V


        java.util.Vector v = new java.util.Vector();
        filmList.setFont(new java.awt.Font("Verdana", 1, 14));
            try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                Connection forb = DriverManager.getConnection("jdbc:odbc:projekt");
                stmt = forb.createStatement();
                ResultSet rs = stmt.executeQuery("select filmNavn from filmkartotek order by filmNavn");
                while (rs.next()) {
                    v.addElement(rs.getString(2));
                }
                filmList.setListData(v);   
            }
            catch (SQLException e) {
                JOptionPane.showMessageDialog(null, "Der er opstået en databasefejl","SQL-fejl",JOptionPane.ERROR_MESSAGE);
            }
            catch (Exception e) {
                JOptionPane.showMessageDialog(null, "Der er opstået en uventet fejl","Kørselsfejl",JOptionPane.ERROR_MESSAGE);
            }
       
       
        filmH.add(filmList, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 90, 200, 200));
Avatar billede saxtus Nybegynder
15. december 2003 - 22:17 #12
det virker, men den mangler en scroller, hvordan smider jeg sådan en på??
Avatar billede _carsten Nybegynder
15. december 2003 - 22:19 #13
Du skal putte den ind i et ScrollPane
Avatar billede saxtus Nybegynder
15. december 2003 - 22:20 #14
har du en hurtig kode på det??
Avatar billede _carsten Nybegynder
15. december 2003 - 22:22 #15
Kommer her       

        scrollPane1 = new java.awt.ScrollPane();
        filmList = new java.awt.List();

        scrollPane1.add(filmList);
Avatar billede _carsten Nybegynder
15. december 2003 - 22:24 #16
Og så skal du selvfølgelig adde scrollPane1 til framen
Avatar billede saxtus Nybegynder
15. december 2003 - 22:29 #17
så er det klaret, men hvordan kan det være at den kommer frem på den første side når den loader, men når det først kører så virker det fint nok??
Avatar billede _carsten Nybegynder
15. december 2003 - 22:31 #18
Den er jeg ikke lige helt med på ????
Avatar billede saxtus Nybegynder
15. december 2003 - 22:33 #19
Hvis det nu ikke var for at min kode fylder 1400 linier kunne jeg bare sende det.
Jeg har delt mit program op med faneblade, men den scroller er fremme åp den foreste side selvom det ikke er der den er sat ind, der ud over er listen grå indtil man har kørt den igennem
Avatar billede _carsten Nybegynder
15. december 2003 - 22:34 #20
Der er ingen data i Listen, med mindre du kører ovenstående vi har været
og det skal være inden framen vises på skærmen
Avatar billede _carsten Nybegynder
15. december 2003 - 22:38 #21
A ha

Det kan man ikke !

Du blander AWT og Swing og lige netop faner og JInternalFrames kan man ikke gøre det, AWT vil altid skinne igennem

Lav List og scrollpane om til Swing

        scrollPane1 = new javax.swing.JScrollPane();
        filmList = new javax.swing.JList();

        scrollPane1.add(filmList);

Så kører det igen !!
Avatar billede saxtus Nybegynder
15. december 2003 - 22:39 #22
har sat det ind som det skal, men det driller.
Jeg havde de samme problemer da jeg lavede det i Jbuilder, så jeg skiftede til NetBeans, som jeg varmt kan anbefale.
Nå skidt med det, det kigger jeg på i morgen, og hvis alt går galt så bruger jeg comboBoxen.
Mange tak for hjælpen
Avatar billede saxtus Nybegynder
15. december 2003 - 22:39 #23
tester lige en gang til
Avatar billede saxtus Nybegynder
15. december 2003 - 22:47 #24
kan jeg så bruge addItem eller skal det stadig være med den der vector?
Avatar billede _carsten Nybegynder
15. december 2003 - 22:50 #25
Det skal være den med vector
Avatar billede saxtus Nybegynder
15. december 2003 - 22:53 #26
øv den laver bare et tomt felt :(
Avatar billede _carsten Nybegynder
15. december 2003 - 22:56 #27
Så kalder du bare filmList.setSelectedIndex(1); eller 2,3 WhatEver du vil
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