[Java]Outtput van een String gebruiken voor naam van JButton

Pagina: 1
Acties:

  • van.der.schulting
  • Registratie: Juli 2002
  • Laatst online: 09-08-2024
Ik wil met behulp van een loop veel knoppen aanmaken, maar dat lukt niet.

In het voorbeeld wil ik 3 knoppen maken
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    private JButton knop1,knop2,knop3;
    private JLabel label;
    private JTextField tekstvak;
    
    public Testpaneel()
    {
        setLayout(new GridLayout(2,3));
        String knop;
        for(int i=1;i<=3;i++)
        {
            knop="knop"+i;
            knop=new JButton(knop);
        }   
    }


In de for-loop wordt in de eerste regel de titel van de knop aangemaakt: 'knopi' waarbij i 1 t/m 3 voorstelt.
In de tweede regel wordt de knop aangemaakt met de desbetreffende titel. Het gaat fout in de tweede regel. De output van de String gebruik ik als de naam van de JButton, maar dat werkt niet op deze manier.
Immers betekent de regel 'knop=new JButton(knop)' feitelijk het volgende: 'String=new JButton(String)'

Hoe kan ik ervoor zorgen dat de tweede regel mbv de for-loop van het volgende formaat wordt: 'JButton=new JButton(String)'
Met andere woorden hoe kan ik de output van de String voor het '='-teken kan converteren naar de naam van de JButton?

[ Voor 11% gewijzigd door van.der.schulting op 26-06-2006 21:05 ]


Verwijderd

Waarom definieer je knop als een String dan :? Wat wil je nou precies doen?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19-02 19:34

.oisyn

Moderator Devschuur®

Demotivational Speaker

Oftewel, gebruik arrays (of dynamische containers zoals een ArrayList). Dit is overigens wel erg basic.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • van.der.schulting
  • Registratie: Juli 2002
  • Laatst online: 09-08-2024
Verwijderd schreef op maandag 26 juni 2006 @ 21:05:
Waarom definieer je knop als een String dan :? Wat wil je nou precies doen?
De titel (opschrift) van de knop is van het formaat 'knopi' en de naam van de knop is van hetzelfde formaat ('knopi'). De titel wil ik dus als naam gebruiken voor de JButton.
De titel is dus van het formaat String, maar om de titel te gebruiken als naam voor de JButton, moet ik de output van de String gebruiken voor de naam van de JButton. Immers is de output van de String in dit voorbeeld: knop1,knop2,knop3.

Verwijderd

van.der.schulting schreef op maandag 26 juni 2006 @ 21:11:
[...]


De titel (opschrift) van de knop is van het formaat 'knopi' en de naam van de knop is van hetzelfde formaat ('knopi'). De titel wil ik dus als naam gebruiken voor de JButton.
De titel is dus van het formaat String, maar om de titel te gebruiken als naam voor de JButton, moet ik de output van de String gebruiken voor de naam van de JButton. Immers is de output van de String in dit voorbeeld: knop1,knop2,knop3.
Ah, variabele variabelenamen...

Niet doen, hier hebben ze array's voor, zoals hierboven ook al gezegd is.

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Zoals oisyn al zegt, heb je hier arrays of collections voor nodig. En zoals oisyn ook al zei is dit vrij basic, en moet je misschien nog even kijken naar object orientatie voordat je je waagt aan zulke dingen.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class TestPaneel
{
    private List<JButton> buttons;

    public TestPaneel()
    {
        this.buttons = new ArrayList<JButton>();

        for (int i=0; i < 3; i++)
        {
            this.buttons.add(new JButton("knop"+i));
        }

        //Voor 0 <= j < 3 geldt: this.buttons.get(j) bevat de button met label "knop"+j
    }

}


[edit]vergeten te initialiseren.

[ Voor 21% gewijzigd door prototype op 26-06-2006 21:19 ]


  • van.der.schulting
  • Registratie: Juli 2002
  • Laatst online: 09-08-2024
prototype schreef op maandag 26 juni 2006 @ 21:16:
Zoals oisyn al zegt, heb je hier arrays of collections voor nodig. En zoals oisyn ook al zei is dit vrij basic, en moet je misschien nog even kijken naar object orientatie voordat je je waagt aan zulke dingen.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class TestPaneel
{
    private List<JButton> buttons;

    public TestPaneel()
    {
        this.buttons = new ArrayList<JButton>();

        for (int i=0; i < 3; i++)
        {
            this.buttons.add(new JButton("knop"+i));
        }

        //Voor 0 <= j < 3 geldt: this.buttons.get(j) bevat de button met label "knop"+j
    }

}


[edit]vergeten te initialiseren.
Op dit moment ben ik ook nog behoorlijk basic bezig, maar in dit geval wist ik echt even niet meer waar ik het zoeken moest. Bedankt voor de hulp.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 19-02 19:34

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je maakt alleen een cruciale denkfout. De naam van de variabele is er voor de programmeur om aan de compiler duidelijk te maken over welke variabele je het hebt. Het is dan ook onzin om te proberen de caption van een knop te koppelen aan een variabelenaam.

Zoals ik al zei, wat je wilt een arrays, of iig een container waar je meerdere objecten in kunt stoppen.

.edit: note to self: niet even wat anders doen voor je op versturen klikt :P

[ Voor 11% gewijzigd door .oisyn op 26-06-2006 21:28 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1