Avatar billede munkeholm Nybegynder
13. april 2011 - 10:49 Der er 9 kommentarer og
1 løsning

Hvordan vælger jeg et element ud fra en String?

Jeg har et lille problem..

jeg skal vælge en JLabel ud fra en String da navnet på min JLabel altid vil være JLabel"xxxx"Lives hvordan får jeg den til at opfatte min String som navnet på en JLabel ? :)

Hvis jeg bliver nød til at uddybe så skriv lige.
Avatar billede CC112 Nybegynder
13. april 2011 - 10:50 #1
Hvad koder du i?
Avatar billede munkeholm Nybegynder
13. april 2011 - 10:57 #2
NetBeans 6.9.1, og java Selvfølgelig nu den ligger i den kategori :)
Avatar billede CC112 Nybegynder
13. april 2011 - 11:08 #3
Sorry det havde jeg ik set.. :)
jeg kan heller ik hjælpe dig med Java sorry
Avatar billede tjens Nybegynder
13. april 2011 - 12:19 #4
Dit UI-framework må have en metode til at hente objekter på navn.

noget ala JLabel label = (JLabel) UIManager.get("JLabel"+lblNo+"Lives");
Avatar billede munkeholm Nybegynder
13. april 2011 - 14:40 #5
JLabel label = (JLabel) UIManager.get("jLabel"+votethisup.getName()+"Lives");               
    System.out.println(votethisup.getName()); // returnere Annie
    System.out.println(label); // retunere null
label.setText("" + zz.getHeroLives(votethisup.getName()));


variable navnet på den jLabel jeg gerne vil have fat i hedder 'jLabelAnnieLives' eller lign.

men kan ikke få det UIManager til at virke, kan os være mig der ikke forstår det rigtigt
Avatar billede tjens Nybegynder
13. april 2011 - 21:05 #6
Du kan gemme referencen til dine labels i en HashMap, med en string som key:


        import java.util.*;
        Map<String,JLabel> labels = new HashMap<String,JLabel>(); 

        label = new JLabel("Tekst 1");
        panel.add(label);
        labels.put("label1", label);

        label = new JLabel("Tekst 2");
        panel.add(label);
        labels.put("label2", label);
       
        label = labels.get("label1");
        System.out.println(label);
   
Avatar billede arne_v Ekspert
14. april 2011 - 04:21 #7
Den rigtige loesning er nok at gemme informationen i array/List/Map.

Som spurgt:

    @SuppressWarnings("unchecked")
    public static <T extends Component> T find(Container parent, Class<T> typ, String nam) {
        for(Component c : parent.getComponents()) {
            if(c.getClass().equals(typ) && c.getName().equals(nam)) {
                return (T)c;
            }
        }
        return null;
    }

kaldes f.eks. som:

find(getContentPane(), JLabel.class, "navn paa label").getText()
Avatar billede arne_v Ekspert
22. maj 2011 - 21:54 #8
munkeholm??
Avatar billede munkeholm Nybegynder
26. maj 2011 - 19:11 #9
Glemte alt om denne løsning da jeg synes det virkede for besværligt og ikke rigtigt virkede om som det kunne bruges i den hensigt jeg gerne ville bruge det :/

(og vi gik igang med exams projekt)
Avatar billede arne_v Ekspert
27. maj 2011 - 00:39 #10
Det kan ikke goeres nemmere og det passer med din beskrivelse af problem stillingen.
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