2 sterren tekenen. (met gebruik van mvc-model)

Status
Niet open voor verdere reacties.

romanosan

Gebruiker
Lid geworden
7 okt 2007
Berichten
88
Ik heb de volgende applicatie geschreven en nou is het de bedoeling dat ik een aantal van die sterren op het scherm maak, maar ik krijg het voor elkaar om maar 1 ster te tekenen. Weet iemand wat ik over het hoofd zie?

Code:
import java.awt.*;
import javax.swing.*;

public class Paneel extends JPanel 
{	
	private Ster model,model2;
        private JPanel view,view2;
	private JPanel controller;

	public Paneel() 
	{
	    setLayout( null );
	    setBackground (Color.GREEN);	
		
		model = new Ster(50, 100, 30,5,Color.BLUE);
		model2 = new Ster(100, 50, 5,30,Color.BLUE);
		view = new SterView(model,model2);
		view2= new SterView2(model,model2);
		controller = new Bedieningspaneel(model, view);

		add(view,view2);
		add(controller);
	}
}

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

class SterView extends JPanel 
{
	private Ster model,model2;
	
	// Constructor
	public SterView(Ster model, Ster model2) 
	{
		this.model = model;
		this.model2 = model2;
		setBackground (Color.RED);
	    setBounds( model.getxPositie(), model.getyPositie(), model.getHoogte() + 50, model.getBreedte() + 20);
	    setBounds( model2.getxPositie(), model2.getyPositie(), model2.getHoogte() + 50, model2.getBreedte() + 20);
	}

	public void paintComponent( Graphics g )
	{
	    super.paintComponent( g );//liggend
	    g.setColor (model.getKleur());
	    g.fillRect(10, 25, model.getHoogte(), model.getBreedte());// de cooordinaten van je model IN je view
	    
	    g.setColor (model2.getKleur());//staand
	    g.fillRect(25, 10, model2.getHoogte(), model2.getBreedte());
	}
}

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

class SterView2 extends JPanel 
{
	private Ster model,model2;
	
	// Constructor
	public SterView2(Ster model, Ster model2) 
	{
		this.model = model;
		this.model2 = model2;
		setBackground (Color.YELLOW);
	    setBounds( model.getxPositie(), model.getyPositie(), model.getHoogte() + 50, model.getBreedte() + 20);
	    setBounds( model2.getxPositie(), model2.getyPositie(), model2.getHoogte() + 50, model2.getBreedte() + 20);
	}

	public void paintComponent( Graphics g )
	{
	    super.paintComponent( g );//liggend
	    g.setColor (model.getKleur());
	    g.fillRect(10, 25, model.getHoogte(), model.getBreedte());// de cooordinaten van je model IN je view
	    
	    g.setColor (model2.getKleur());//staand
	    g.fillRect(25, 10, model2.getHoogte(), model2.getBreedte());
	}
}

Code:
import java.awt.Color;

public class Ster 
{
	private int xPositie, yPositie, hoogte,breedte;
	private Color kleur;

	public Ster(int xPositie, int yPositie, int hoogte, int breedte,Color kleur) //The constructor
	{
		this.xPositie = xPositie;
		this.yPositie = yPositie;
		this.hoogte  = hoogte;
		this.breedte = breedte;
		this.kleur =kleur;
	}
	
	public int getxPositie()
	{
		return (xPositie);
	}
	public int getyPositie()
	{
		return (yPositie);
	}
	public int getHoogte()
	{
		return (hoogte);
	}
	public int getBreedte()
	{
		return (breedte);
	}
	public Color getKleur()
	{
		return (kleur);
	}
	
	public void setxPositie(int xPositie)
	{
		this.xPositie = xPositie;
	}
	public void setyPositie(int yPositie)
	{
		this.xPositie = yPositie;
	}
	public void setHoogte(int hoogte)
	{
		this.hoogte = hoogte;
	}
	public void setBreedte(int breedte)
	{
		this.breedte = breedte;
	}
	public void setKleur(Color kleur)
	{
		this.kleur = kleur;
	}	
}

Code:
 
Laatst bewerkt:
Wat mij zo en zo opvalt is dat je in je derde code-blok twee private variabelen van het type Ster maakt, maar je class Ster heeft geen non-argument constructor.
Ik zie overigens ook nergens een main method om je app aan de gang te brengen (of lees ik er overheen?).
Ook van SterView en SterView2 maak je wel een constructor met parameters, dus moet je ze ook zonder maken.
In je eerste code-blok zie ik private JPanel controller staan en je maakt daar een new Bedieningspaneel() object van, waar komt Bedieningspaneel vandaan ?
 
Wat mij zo en zo opvalt is dat je in je derde code-blok twee private variabelen van het type Ster maakt, maar je class Ster heeft geen non-argument constructor.
Ik zie overigens ook nergens een main method om je app aan de gang te brengen (of lees ik er overheen?).
Ook van SterView en SterView2 maak je wel een constructor met parameters, dus moet je ze ook zonder maken.
In je eerste code-blok zie ik private JPanel controller staan en je maakt daar een new Bedieningspaneel() object van, waar komt Bedieningspaneel vandaan ?

Dit zijn de mainmethode en bedieningspaneel.

Code:
import javax.swing.JFrame;

public class OpstartKlasse extends JFrame {
  public static void main( String args[] ) {
    JFrame frame = new OpstartKlasse();
    frame.setSize( 700, 500 );
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    frame.setTitle( "hallo" );
    frame.setContentPane( new Paneel() );
    frame.setVisible( true );
  }
}

Code:
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JPanel;

// *************CONTROLLER************ 

class Bedieningspaneel extends JPanel 
{
	private Ster model;
	private JPanel view;
	
	// Constructor
	public Bedieningspaneel(Ster model, JPanel view) 
	{
		this.model = model;
		this.view = view;

		setBackground(Color.DARK_GRAY);

	}

}
 
De ster is trouwens gewoon een plusje ( een horizontale en verticale lijn dus).

Wat ik wil doen een aantal van die plusjes op mn scherm tekenen ( 20 stukes bijvoorbeeld)
maar ik wil het met elk een eigen view doen. Ik doe dit om te oefenen met MVC
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan