Avatar billede mik28 Seniormester
30. april 2006 - 07:48 Der er 16 kommentarer og
1 løsning

give variable navn

Hej Eksperter,

Jeg har en række JLabels som skal navngives. Jeg vil gerne have dem til at hedde l1,l2,l3 og så fremdeles. Jeg har prøvet at gøre således, men jeg får at vide at der mangler et ;

int i=1;

JLabel l+i = new JLabel( rs.getString("navn"), JLabel.LEFT);
Avatar billede nielle Nybegynder
30. april 2006 - 08:26 #1
Hvorfor ikke i stedet lægge dem i et array (hvis du kender antallet):

        JLabel[] l = new JLabel[10];  // Plads til 10 JLabels.
       
        int i = 0;
        l[i] = new JLabel(rs.getString("navn"), JLabel.LEFT);

- eller i en ArrayList hvis du ikke kender antallet:

        ArrayList<JLabel> l = new ArrayList<JLabel>();
       
        l.add(new JLabel(rs.getString("navn"), JLabel.LEFT));
Avatar billede mik28 Seniormester
30. april 2006 - 08:28 #2
Jeg ved i princippet ikke hvor mange der er
Avatar billede mik28 Seniormester
30. april 2006 - 08:31 #3
og det gør jeg jo så alligevel. Det er bestemt at længden på et Resultset
Avatar billede nielle Nybegynder
30. april 2006 - 08:43 #4
... og ellers kan ju jo også konvertere ArrayList'en til et array når at du er færdig med at putte i den.
Avatar billede mik28 Seniormester
30. april 2006 - 08:48 #5
Det jeg laver ser således ud. Eller retterer det er sådan jeg gerne vil have det til at virke.        

buildConstraints(constraints, 0, i, 1, 1, 100, 100);
            constraints.fill = GridBagConstraints.NONE;
            constraints.anchor = GridBagConstraints.WEST;
            JLabel l+i = new JLabel( rs.getString("navn"), JLabel.LEFT);
            gridbag.setConstraints(l+i, JLabel.LEFT), constraints);
            pane.add(l+i);
Avatar billede mik28 Seniormester
30. april 2006 - 08:51 #6
Sagen er den at JLabel navnet skal være unikt og jeg skal kunne henvise til det i pane.add(l+i);
Avatar billede nielle Nybegynder
30. april 2006 - 08:54 #7
Er du sikker på at denne her kode ikke virker:

buildConstraints(constraints, 0, i, 1, 1, 100, 100);
constraints.fill = GridBagConstraints.NONE;
constraints.anchor = GridBagConstraints.WEST;
JLabel l = new JLabel(rs.getString("navn"), JLabel.LEFT);
gridbag.setConstraints(l, JLabel.LEFT), constraints);
pane.add(l);
Avatar billede mik28 Seniormester
30. april 2006 - 08:58 #8
den virker fint. Problemet er bare at det ligger i en while løkke, så l skal have et nyt navn for hver gennemløb
Avatar billede nielle Nybegynder
30. april 2006 - 09:03 #9
Den viste kode kan sagtens lægges ind i en while uden at det vælter. Der er nemlig ikke noget i dit eksempel ind til nu som kræver at man ikke kan genbruge navnet 'l' for hver JLabel instans.

Det kan selvfølgeligt være at du senere skal bruge det...
Avatar billede mik28 Seniormester
30. april 2006 - 09:09 #10
Jeg kan da ikke gøre sådan her l er jo allerede defineret

try {
       
                while (rs.next()) {
               
                // Navn
                buildConstraints(constraints, 0, i, 1, 1, 100, 100);
                constraints.fill = GridBagConstraints.NONE;
                constraints.anchor = GridBagConstraints.WEST;
                JLabel l = new JLabel( rs.getString("navn"), JLabel.LEFT);
                gridbag.setConstraints(l, constraints);
                pane.add(l);
               
               
               
                // Antal på lager
                buildConstraints(constraints, 1, i, 1, 1, 100, 100);
                constraints.fill = GridBagConstraints.HORIZONTAL;
                JLabel l = new JLabel(rs.getString("antal"));
                gridbag.setConstraints(l, constraints);
                pane.add(l);
               
                i++;
           
                }
        setContentPane(pane);   

       
        } catch (SQLException s) {
            //    buffer.append("<h3>SQL fejl: " + s.toString() + " "
            //    + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
        }
Avatar billede nielle Nybegynder
30. april 2006 - 09:11 #11
try {
    JLabel l

    while (rs.next()) {
        // Navn
        buildConstraints(constraints, 0, i, 1, 1, 100, 100);
        constraints.fill = GridBagConstraints.NONE;
        constraints.anchor = GridBagConstraints.WEST;
        l = new JLabel(rs.getString("navn"), JLabel.LEFT);
        gridbag.setConstraints(l, constraints);
        pane.add(l);

        // Antal på lager
        buildConstraints(constraints, 1, i, 1, 1, 100, 100);
        constraints.fill = GridBagConstraints.HORIZONTAL;
        l = new JLabel(rs.getString("antal"));
        gridbag.setConstraints(l, constraints);
        pane.add(l);

        i++;
    }
        setContentPane(pane);   
} catch (SQLException s) {
    //    buffer.append("<h3>SQL fejl: " + s.toString() + " "
    //    + s.getErrorCode() + " " + s.getSQLState() + "</h3>");
}
Avatar billede nielle Nybegynder
30. april 2006 - 09:12 #12
Linjen:

JLabel l

- rettes til:

JLabel l;
Avatar billede mik28 Seniormester
30. april 2006 - 09:14 #13
skide smart :-)
Avatar billede mik28 Seniormester
30. april 2006 - 09:15 #14
Så skal jeg bare have min databaseforbindelse til at virke
Avatar billede mik28 Seniormester
30. april 2006 - 09:28 #15
Jeg er nemlig ret ligeglad med om jeg kan henvise til de enkelte JLabels, så hvis man kan gøre det således er det cool
Avatar billede mik28 Seniormester
30. april 2006 - 11:46 #16
Du må meget gerne lægge et svar
Avatar billede nielle Nybegynder
30. april 2006 - 12:07 #17
Oki :^)
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