3 staven tekenen m.b.v. MVC-principle

Status
Niet open voor verdere reacties.

romanosan

Gebruiker
Lid geworden
7 okt 2007
Berichten
88
Ik heb onderstaande stukje code en wil 3 staven tekenen i.p.v 1.
hoe doe ik dat?


Code:
import java.awt.BorderLayout;


public class Stap0Paneel extends JPanel 
{
	private Boom model;
	private JPanel view;
	private JPanel bedieningspaneel;
	private Blad mijnBlad;

	public Stap0Paneel()
{
		setLayout(new BorderLayout());
		setBackground(Color.WHITE);
		model = new Staaf(50, 100, 100, 10, Color.BLACK, "Staaf");

		view = new StaafView(model);
		bedieningspaneel = new Bedieningspaneel(model, view);

		add(view, BorderLayout.CENTER);
		add(bedieningspaneel, BorderLayout.SOUTH);
	}
}

Code:
class StaafView extends JPanel 
{
	private Staaf model;

	// Constructor
	public StaafView(Staaf model) 
	{
		this.model = model;
	}

	public void paintComponent(Graphics g) 
	{
		super.paintComponent(g);
		model.teken(g);
	}

}

 
Drie keer een Staaf & StaafView aanmaken ipv 1 keer...

Dit is nu het idee achter een MVC principe....;)
 
Drie keer een Staaf & StaafView aanmaken ipv 1 keer...

Dit is nu het idee achter een MVC principe....;)

Bedoel je dat ik het volgende in het paneel moet schrijven?

private Staaf model,model2,model3;
private JPanel view,view2,view3;
 
Bedoel je dat ik het volgende in het paneel moet schrijven?

private Staaf model,model2,model3;
private JPanel view,view2,view3;

Onderstaande heb ik nu, maar het werkt het niet echt...
Code:
public Stap0Paneel()
{
		setLayout(new BorderLayout());
		setBackground(Color.WHITE);
		model = new Staaf(50, 100, 100, 10, Color.BLACK, "staaf");
		model2 = new Staaf(150, 100, 100, 10, Color.BLACK, "staaf");
		model3 = new Staaf(250, 100, 100, 10, Color.BLACK, "staaf");

		view = new StaafView(model);
		view2 = new StaafView(model2);
		view3 = new StaafView(model3);

		bedieningspaneel = new Bedieningspaneel(model, view);

		add(view, BorderLayout.CENTER);
		add(view2, BorderLayout.CENTER);
		add(view3, BorderLayout.CENTER);

		add(bedieningspaneel, BorderLayout.SOUTH);
	}
}
 
ook nog drie controlers,.. bedieningspaneel = new Bedieningspaneel(model, view); voor model 2 & 3....
 
Kan je de klasse van staaf en bedieningpaneel eens posten ? Heeft bedieningspaneel nog een extra methode om staaf & view toe te voegen ?

gr
 
Kan je de klasse van staaf en bedieningpaneel eens posten ? Heeft bedieningspaneel nog een extra methode om staaf & view toe te voegen ?

gr

bedieningspaneel is op dit moment voor mij nog niet zo belangrijk. Ik wil namelijk standaard bij het runnen 3 staven op het scherm zien.

Dit is de klasse staaf:

Code:
public class Staaf
{
	private int xPositie,yPositie,lengte,breedte ;
	private Color  kleur;

	public Staaf(int xPositie, int yPositie,int breedte,int lengte, Color kleur, String string) //The constructor
	{	
		this.xPositie = xPositie;
		this.yPositie = yPositie;
		this.lengte = lengte;
		this.breedte = breedte;
		this.kleur = kleur;
		
	}
	
	//getters
	public int getXPositie()
	{
		return (xPositie);
	}
	public int getYPositie()
	{
		return (yPositie);
	}
	public int getLengte()
	{
		return (lengte);
	}
	public int getBreedte()
	{
		return (breedte);
	}
	public Color getKleur()
	{
		return (kleur);
	}
	
	//setters
	public void setXPositie(int xPositie)
	{
		this.xPositie = xPositie;
	}
	public void setYPositie(int yPositie)
	{
		this.yPositie = yPositie;
	}
	public void setLengte(int lengte)
	{
		this.lengte = lengte;
	}
	public void setBreedte(int breedte)
	{
		this.breedte = breedte;
	}
	public void setKleur(Color kleur)
	{
		this.kleur = kleur;
	}
	
	public void teken(java.awt.Graphics g) 
	{		
		//teken staaf
		g.setColor(kleur);
		g.fillRect(xPositie, yPositie, lengte, breedte);
	}	
}

En dit is de klasse StaafView

Code:
import java.awt.Graphics;
import javax.swing.JPanel;

class StaafView extends JPanel 
{
	private Staaf model;   

	// Constructor
	public StaafView (Staaf model) 
	{
		this.model = model;
	}

	public void paintComponent(Graphics g) 
	{
		super.paintComponent(g);
		model.teken(g);
	}

}
 
De view is panel..en voeg je 3x toe met add(Borderlayout.centre).. dus allemaal op dezelfde plaats...

Verwijder eens de SetLayout(new BorderLayout());
en verander de add(view, BorderLayout.Centre) door add(view);

dit zal helpen...

ps. Model mag eigenlijk geen teken() functie deze hoort in de view thuis....
 
De view is panel..en voeg je 3x toe met add(Borderlayout.centre).. dus allemaal op dezelfde plaats...

Verwijder eens de SetLayout(new BorderLayout());
en verander de add(view, BorderLayout.Centre) door add(view);

dit zal helpen...

ps. Model mag eigenlijk geen teken() functie deze hoort in de view thuis....

oke, Ik ga dat gelijk even doen, ik hou je op de hoogte.
 
hmm nee dat werkt niet. :(

De oplossing:

Allereerst in het paneel 3 objecten declareren:
Code:
private Staaf model,model2,model3;

en in de view moet je in de constructor dat ook even meenemen:
Code:
	public StaafView(Staaf model,Staaf model2, Staaf model3) 
	{
		this.model = model;
		this.model2 = model2;
		this.model3 = model3;
	}

Dankjewel voor het meedenken.
 
Hoe stop ik die 3 staven in een arraylist en laat ik ze tekenen vanuit de list?
 
Je oplossing is niet echt helemaal volgens de regels. Elke model heeft een eigen view... ;)

Je kan elke type object in een array kwijt dit een
Code:
List<Staaf> list = new ArrayList<Staaf>()  // nieuwe array..

list.add(staaf1);
list.add(staaf2);
list.add(staaf3);   // opbouwen list...

for (Staaf  staaf : list )   {
  staaf.doIets();  // hier een zinnige functie van staaf..
}
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan