[Java] Variabel aantal Objecten maken *

Pagina: 1
Acties:
  • 48 views sinds 30-01-2008

  • compubink
  • Registratie: September 2000
  • Laatst online: 23:04

compubink

...====...

Topicstarter
Is het mogelijk om net zoals bij C++ dynamisch objecten te genereren?

Kun je bijvoorbeeld de gebruiker een getal op laten geven en dan een x aantal knoppen aanmaken met de naam: naam+getal?

Dus gebruiker toetst in 2
2 buttons:
button1 en button2

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Natuurlijk kan dat. Vrijwel hetzelfde als bij C++ zelfs. Wat heb je al geprobeerd en wat gaat er mis?

  • compubink
  • Registratie: September 2000
  • Laatst online: 23:04

compubink

...====...

Topicstarter
Op zondag 03 februari 2002 22:20 schreef marcusk het volgende:
Natuurlijk kan dat. Vrijwel hetzelfde als bij C++ zelfs. Wat heb je al geprobeerd en wat gaat er mis?
Heb eigenlijk nog niets geprobeerd, want ik weet de juiste syntax niet, en kan er niets over vinden.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Dat lijkt mij meer een probleem van een for-loopje... en daar is helemaal niet dynamisch aan :O .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • tomato
  • Registratie: November 1999
  • Niet online
compubink: Heb eigenlijk nog niets geprobeerd, want ik weet de juiste syntax niet, en kan er niets over vinden.
new :?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Onder dynamische instantiatie wordt trouwens over het algemeen het maken van een Object van een klasse bedoelt, waarvan de klasse at-compile time niet bekend is.

Hier is alles at compile-time bekend.

Waarschijnlijk wil je gewoon gebruik maken van een loopje in combinatie met layout management (wellicht een GridLayout).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • compubink
  • Registratie: September 2000
  • Laatst online: 23:04

compubink

...====...

Topicstarter
Ik denk dat het probleem niet helemaal duidelijk is.

Ik wil dat er een x aantal knoppen worden gegenereerd met een naam van naam+x.

Het aanmaken van de knoppen moet echt dynamisch gaan, en het is dus niet van tevoren bekend.

Maar kan dit gewoon door:
code:
1
2
3
4
5
6
for(int i=0;i<ingegevenaantal;i++) {
   Button ?????????? = new Button("Naam"+String.valueOf(i));
   ?????????????????.setBounds(i+10,i+10,10,10);
   ?????????????????.addActionListener(this);
   add(?????????????);
}

En hoe krijg ik nu die naam goed?

Het moet eigenlijk zo zijn dat bij de actionlistener de knop een bericht weergeeft met zijn naam.

Dus als er op btn1 wordt gedrukt dan verschijnt de tekst btn1.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Nou ik zal je matsen ;) .
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.awt.*;
import javax.swing.*;

public class Test {
    public static void main(String[] ps) {

      int nrOfButtons = 5;
      JPanel panel = new JPanel(new GridLayout( nrOfButtons,1));

      for(int i=0; i<nrOfButtons; i++) {
        panel.add(new JButton("Button " + (i + 1)));
      }

      JFrame frame = new JFrame("Buttons!!");
      frame.setContentPane(panel);
      frame.pack();
      frame.show();
    }
}

Je kunt trouwens niet dynamisch variabele namen samenstellen, dat kan ook niet in C++. Je kunt wel een array gebruiken.

Uiteraard kan je in mijn voorbeeld nog allerlei dingen met die button doen.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

code:
1
2
3
4
for(int k=0;k<10;k++){
  JButton button = new JButton(""+k);
  ...voeg buttons toe aan een panel of iets dergelijks..
}

En dan moet je niet meer gaan kijken naar ActionListeners. Althans niet meer de manier zoals je die in het begin leert: de actionListener die aan een frame is gekoppeld. Maar ik zou dan Actions gaan gebruiken. Die staan ook wel ergens in de su n api.

ps: ik heb mijn vervanger van smugglers run al gevonden :) Mastermind.

  • compubink
  • Registratie: September 2000
  • Laatst online: 23:04

compubink

...====...

Topicstarter
thnx

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
compubink: Het aanmaken van de knoppen moet echt dynamisch gaan, en het is dus niet van tevoren bekend.
Het ligt er maar aan wat je dynamisch noemt: alle knoppen worden at runtime aangemaakt, dus wat dat betreft is er niets dynamisch. Alleen het aantal knoppen is onbekend.
En hoe krijg ik nu die naam goed?
Waarom zou je voor elke button een andere variabele-naam willen gebruiken? Je kunt gewoon dezelfde lokale variabele gebruiken of als je ze echt later nog nodig hebt moet je ze in een array stoppen (waarom krijg ik het idee dat je deze link nog niet heb bezocht ;) :
http://java.sun.com/docs/books/tutorial/java/data/arrays.html )

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • compubink
  • Registratie: September 2000
  • Laatst online: 23:04

compubink

...====...

Topicstarter
ps: ik heb mijn vervanger van smugglers run al gevonden :) Mastermind.
????

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Alarmnummer: Maar ik zou dan Actions gaan gebruiken.
Ik zou gelijk de Actions in XML stoppen en deze XML file inlezen met SAX :P .

(lees: Alarmnummer, sommige tips kan je beter even een paar maandjes bewaren 8-) ).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Voorbeeld met actions.
code:
1
2
3
4
5
6
7
8
9
10
11
12
class BlaatAction extends AbstractAction{
  final private int m_index;

  public BlaatAction(int index){
     super(""+index);
     m_index = index;
  }

  public void actionPerformed(ActionEvent ae){
     System.out.println("button:"+m_index);
  }
}

en dan:
code:
1
2
3
4
for(int k=0;k<20;k++){
   JButton button = new JButton(new BlaatAction(k));
   add(button);
}

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op zondag 03 februari 2002 22:39 schreef compubink het volgende:

[..]

????
Jouw site ;)

  • compubink
  • Registratie: September 2000
  • Laatst online: 23:04

compubink

...====...

Topicstarter
Op zondag 03 februari 2002 22:41 schreef Alarmnummer het volgende:

[..]

Jouw site ;)
Jaja, is een oud projectje....

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Klein aanpassing van de titel, die de inhoud iets beter aangeeft.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Voor de goede orde zet ik ook deze op slot.

Zie hier:
[topic=400936/1/25]

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment

Pagina: 1

Dit topic is gesloten.