een object van een klasse maken

Status
Niet open voor verdere reacties.

romanosan

Gebruiker
Lid geworden
7 okt 2007
Berichten
88
Ik heb een klasse Huis. Ik heb het als volgt getekend: voor het dak gebruik ik 3 lijnen ( drawLine) en voor de onderkant een drawRect. Verder heb ik een deur en een raam.

In mijn paneel lukt het om een object te laten zien van de klasse Huis, maar het toevoegen van een 2e huis lukt niet.

Ik denk dat ik iets onhandigs heb gedaan in mijn klasse. Zou iemand mij kunnen helpen/adviseren?

Code:
import java.awt.Color;

public class Huis 
{
	private boolean deurOpen, isAan;
	private int horizontalePositie;

	public Huis(boolean deurOpen, boolean isAan, int horizontalePositie) 
	{
		this.deurOpen = deurOpen;
		this.isAan = isAan;
		this.horizontalePositie = horizontalePositie;
	}
	//getters
	public boolean getdeurOpen()
	{
		return (deurOpen);
	}
	
	public boolean getisAAn()
	{
		return (isAan);
	}
	
	public int gethorizontalePositie()
	{
		return (horizontalePositie);
	}
	
	//setters
	public void setdeurOpen(boolean deurOpen)
	{
		this.deurOpen = deurOpen;
	}
	
	public void setisAan(boolean isAan)
	{
		this.isAan = isAan;
	}
	
	public void sethorizontalePositie(int horizontalePositie)
	{
		this.horizontalePositie = horizontalePositie;
	}
	
	public void teken(java.awt.Graphics g) 
	{
		g.setColor(Color.BLUE);
		//onderkant huis
		g.drawRect(70, 140, 130, 90);

		//dak
		g.drawLine(140, 40, 200, 140);
		g.drawLine(140, 40, 70, 140);
		g.drawLine(201, 141, 71, 141);
		
		//raam
		g.setColor (Color.BLACK);
		g.fillRect(115,100,40,30);
		
		//deur
		g.setColor (Color.RED);
		g.fillRect(120, 180, 30, 50);		
	}
}
 
Huis 2 teken je op exact dezelfde plaats als nr.1, dus zal ziet het er uit als 1 huis...
 
Huis 2 teken je op exact dezelfde plaats als nr.1, dus zal ziet het er uit als 1 huis...

hoezo dat? want dat vorige is de dataklasse,
en dit is het paneel -->


Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Paneel extends JPanel 
{
	private JButton deurKnop, lichtKnop;
	private Huis mijnHuis,mijnHuis2;

	public Paneel() 
	{
		setBackground(Color.GREEN);

		deurKnop = new JButton("Deur open/dicht");
		// deurKnop.addActionListener(new KnopHandler());

		lichtKnop = new JButton("aan/uit");
		// lichtKnop.addActionListener((new KnopHandler());
			
		add (deurKnop);
		add (lichtKnop);

		mijnHuis = new Huis (false,false,40);
		mijnHuis2 = new Huis (true,true,100);
	}
	
	public void paintComponent(Graphics g)
	{
	    super.paintComponent (g);
	    
	    mijnHuis.teken(g);
	    mijnHuis2.teken(g);
	}
	
	class KnopHandler implements ActionListener 
	{
		public void actionPerformed(ActionEvent e) 
		{ 
			repaint();
		}
	}    
}
 
Laatst bewerkt:
Alle coordinaten zijn constanten. (Je doet niks met horizontalePositie...;))

Oké het is gelukt. Dit is het uiteindelijk geworden.

Code:
	public void teken(java.awt.Graphics g) 
	{		
		g.setColor(Color.BLUE);
		g.drawRect(horizontalePositie, 100, 80, 150);//huis
		g.drawRect(horizontalePositie+25, 200, 30, 50);//deur
		g.drawRect(horizontalePositie+25,120,25,25); //raam
		
		if (deurOpen)
		{
			g.setColor(Color.BLACK);
			g.fillRect(horizontalePositie+25, 200, 30, 50);//deur
		}
		
		if (isAan)
		{
			g.setColor(Color.YELLOW);
			g.fillRect(horizontalePositie+25,120,25,25); //raam
		}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan