Toon posts:

[Java] Methodekoppeling aan Applet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een Java-applicatie met diverse klassen, maar mijn probleem ligt tussen de klasse Interface en Simulator.

In de klasse Interface heb ik een applet aangemaakt. Deze heeft drie knoppen:

PHP:
1
2
3
4
JPanel buttonPanel = new JPanel(new GridLayout(3, 3)); 
            addButton(buttonPanel, "Konijnen Probability wijzigen"); 
            addButton(buttonPanel, "Leeuw Probability wijzigen");
            addButton(buttonPanel, "Fox Probability wijzigen");


Zodra er op een knop wordt gedrukt, met er een methode aangeroepen worden. Hiermee wordt een venster naar voren gebracht, met de vraag aan de gebruiker of hij een waarde wil invoeren.

De code waarmee de functie wordt toegewezen aan een knop:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void actionPerformed(ActionEvent event) 
    { 
        String command = event.getActionCommand(); 

        if(command.equals("konijnen Probability wijzigen")) 
           
        { 
            int number = Integer.parseInt(command); 
            sim.setRabbitCreationProbability(doorgevenProb);
        } 
        
        else if(command.equals("Leeuw Probability wijzigen"))
            sim.setFoxCreationProbability(doorgevenProb);
        else if(command.equals("Fox Probability wijzigen"))
            sim.setLeeuwCreationProbability(doorgevenProb); 
                         

    }


In de klasse sim staan dus de methodes setRabbitCreationProbability, etcetc. doorgevenProb staat als double gedefinieerd in de klasse interface.

Het geheel compileert en geeft wat dat betreft geen fouten. Echter, als men op een knop klikt, wordt men niet gevraagd een waarde in te geven. Ik wil hierbij liever geen gebruik maken van een Field. Er moet dus echt een venstertje tevoorschijn komen. Hoe doe ik dat?

Doe dit alles in BlueJ overigens, ben nog niet echt een gevorderd programmeur :)

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Bij mijn weten zijn er geen standaard venstertjes om input te krijgen. Zie bericht NetForce1.

Een venstertje boven je hoofdscherm is een JDialog. Zo'n JDialog kan je ook zelf maken. Je moet er dan wel wat componenten stoppen zoals een JTextField.

[ Voor 25% gewijzigd door Daos op 22-01-2005 19:30 ]


  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

Je moet aan elke knop vertellen tegen welke actionlistener hij moet praten. Je zult dus voor iedere knop een object aan moeten maken. Het is ook netter om voor elke knop een aparte listener te maken.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//JButtons instantiëren + initialiseren
JButton konijnButton = new JButton("Konijnen Probability wijzigen");
JButton leeuwButton = new JButton("Leeuw Probability wijzigen");
JButton foxButton = new JButton("Fox Probability wijzigen");

//ActionListener eraan vastknopen
konijnButton.addActionListener(new KonijnListener());
leeuwButton.addActionListener(new LeeuwListener());
foxButton.addActionListener(new FoxListener());

//Gooi de buttons op het panel
//Ik weet niet precies hoe de GridLayout werkt, 
//dus het kan zijn dat deze code niet helemaal correct is
JPanel buttonPanel = new JPanel(new GridLayout(3, 3));
buttonPanel.add(konijnButton);
buttonPanel.add(leeuwButton);
buttonPanel.add(foxButton);

//ActionListeners
KonijnListener implements ActionListener
{
  public void actionPerformed (ActionEvent e)
  {
    //doe hier je ding
  }
}

//idem voor LeeuwListener en FoxListener

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

Daos schreef op zaterdag 22 januari 2005 @ 17:51:
Bij mijn weten zijn er geen standaard venstertjes om input te krijgen.

Een vensterje boven je hoofdscherm is een JDialog. In zo'n JDialog moet je zelf wat componenten stoppen zoals een JTextField.
http://java.sun.com/j2se/...ax/swing/JOptionPane.html

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"