Hallo,
Ik zal de situatie even kort uitleggen. Het is de bedoeling dat ik een programma maak met trampolines en kinderen die erop springen. Hierbij heb ik een paneel klasse, een frame klasse en klasses voor een kind en een trampoline doormiddel van het MVC principe.
Ik ben nu zover dat als ik met de rechtermuisknop klik op het scherm dan verschijnt er een trampoline op die plek. Het is de bedoeling dat als ik dan rechtsklik op die trampoline dat er dan een kind verschijnt. Ook dit lukt nog. Maar als ik nou een 2e trampoline maak en ik klik op de 1e trampoline, dan wil ik dat er nog een kind bijkomt op de 1e trampoline, maar dat gebeurt niet. Deze komt namelijk op de 2e trampoline.
Hierbij de code van het paneel:
Ik zal de situatie even kort uitleggen. Het is de bedoeling dat ik een programma maak met trampolines en kinderen die erop springen. Hierbij heb ik een paneel klasse, een frame klasse en klasses voor een kind en een trampoline doormiddel van het MVC principe.
Ik ben nu zover dat als ik met de rechtermuisknop klik op het scherm dan verschijnt er een trampoline op die plek. Het is de bedoeling dat als ik dan rechtsklik op die trampoline dat er dan een kind verschijnt. Ook dit lukt nog. Maar als ik nou een 2e trampoline maak en ik klik op de 1e trampoline, dan wil ik dat er nog een kind bijkomt op de 1e trampoline, maar dat gebeurt niet. Deze komt namelijk op de 2e trampoline.
Hierbij de code van het paneel:
Code:
package EindopdrachtTrampolines;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class Stap2Paneel extends JPanel implements MouseListener
{
private Stap2KindModel kind; // alle kinderen die er zijn
private Stap2KindView kindView; // voor elk kind een view
private Stap2KindController kindController; // voor elk kind een controller
private Stap2TrampolineModel trampoline; // alle trampolines die er zijn
private Stap2TrampolineView trampolineView; //voor elke trampoline een view
private Stap2TrampolineController trampolineController; // voor elke trampoline een controller
private ArrayList<Stap2KindModel> lijstKinderen; // een lijst om de kinderen in op te slaan
private ArrayList<Stap2TrampolineModel> lijstTrampolines; // een lijst om de trampolines in op te slaan
private int x,y;
public Stap2Paneel()
{
setLayout(null); // geen layout manager
setBackground(Color.WHITE); // achtergrondkleur wit
addMouseListener(this);
//initialiseren van de lijst
lijstTrampolines = new ArrayList<Stap2TrampolineModel>();
}
public void mouseClicked( MouseEvent e )
{
if( e.isMetaDown() ) // Onderzoek of met de rechterknop is geklikt
{
x = e.getX(); // de x-coordinaat ophalen van de plaats waar er is geklikt en deze als variabele x instellen
y = e.getY(); // de y-coordinaat ophalen van de plaats waar er is geklikt en deze als variabele y instellen
lijstTrampolines.add(trampoline); // trampoline toevoegen aan de lijst
lijstKinderen = new ArrayList<Stap2KindModel>();
trampoline = new Stap2TrampolineModel(x,y,100,"Poing",lijstKinderen); //model
trampolineView = new Stap2TrampolineView(trampoline); //view
trampolineController = new Stap2TrampolineController(trampoline, trampolineView); //controller
trampolineView.setBounds(trampoline.getXInvoer(),trampoline.getYInvoer(),trampoline.getFormaat()+1,20); // positie instellen door de xInvoer en yInvoer op te halen, en grootte instellen door formaat op te halen en 20 in te vullen als hoogte
for(Stap2TrampolineModel trampoline : lijstTrampolines) // voor elke trampoline uit de lijst de view op het paneel zetten
{
add(trampolineView);
}
trampolineView.addMouseListener(new MuisHandler());
trampolineView.repaint(); // opnieuw tekenen
}
}
public void mouseEntered( MouseEvent e ) {}
public void mouseExited( MouseEvent e ) {}
public void mousePressed( MouseEvent e ) {}
public void mouseReleased( MouseEvent e ) {}
class MuisHandler implements MouseListener
{
public void mouseClicked( MouseEvent e )
{
if( e.isMetaDown() ) // Onderzoek of met de rechterknop is geklikt
{
lijstKinderen.add(kind); // trampoline toevoegen aan de lijst
kind = new Stap2KindModel(x,y-65,100,Color.blue,Color.red,"SPRINGEN"); //model
kindView = new Stap2KindView(kind); //view
kindController = new Stap2KindController(kind, kindView); //controller
kindView.setBounds(kind.getXInvoer()-10,kind.getYInvoer()-kind.getSpringHoogte(),20,kind.getSpringHoogte()+65);
for(Stap2KindModel kind : lijstKinderen) // voor elke trampoline uit de lijst de view op het paneel zetten
{
add(kindView);
}
x += 20;
kindView.repaint(); // opnieuw tekenen
}
}
public void mouseEntered( MouseEvent e ) {}
public void mouseExited( MouseEvent e ) {}
public void mousePressed( MouseEvent e ) {}
public void mouseReleased( MouseEvent e ) {}
}
}
Laatst bewerkt: