Hulp nodig met text String

Status
Niet open voor verdere reacties.

Jaspertjuh

Nieuwe gebruiker
Lid geworden
5 nov 2008
Berichten
3
[Probleem opgelost!] Hulp nodig met text String

Hey allemaal,

Voor school (1e jaar hbo opleiding Informatica) moeten we een boekenplank programmeren met 3 boeken erop. Deze boeken moeten allemaal afzonderlijke kleuren hebben en in een dataklasse staan die "Boek" heet, voor de coordinaten, kleur, lengte, breedte, en titel van de boeken moesten wij gebruik maken van Getters en Setters.

Na flink wat puzzelwerk is mij dat gelukt, alleen moet er ook een titel op de kaft van de boeken komen te staan dmv. een String. Hoewel dit voor de meeste van jullie behoorlijk simpel zal zijn wil het hier maar niet lukken! :(
Is er misschien iemand die weet hoe ik zonder gebruik te maken van een textfield of JLabel tekst op de boeken krijg?

Alvast bedankt, en hieronder staat de code die ik tot nu toe heb (zonder de opstartklasse).

gr. Jasper

Dataklasse "boek"

Code:
package stap0;

import java.awt.Color;
import java.awt.Graphics;

public class Boek
{
  private int xPositie;
  private int yPositie;
  private int breedte;
  private int lengte;
  private String titel;
  private Color kleur;
  
  //De constructor
  
  public Boek( int xPositie, int yPositie, int breedte, int lengte, Color kleur, String titel)
  {
	  this.xPositie = xPositie;
	  this.yPositie = yPositie;
	  this.breedte = breedte;
	  this.lengte = lengte;
	  this.titel = titel;
	  this.kleur = kleur;
  }
  
  // Hieronder staan de GETTERS
  public int getXPositie()
  {
    return xPositie;
  }
  
  public int getYPositie()
  {
    return yPositie;
  }
  
  public int getBreedte()
  {
    return breedte;
  }
  
  public int getLengte()
  {
    return lengte;
  }
  
  public String getTitel()
  {
    return titel;
  }
  
  public Color getKleur()
  {
    return kleur;
  }
  
  //Hieronder staan de SETTERS
  public void setBreedte(int breedte)
  {
    this.breedte = breedte;
  }
  
  public void setLengte(int lengte)
  {
    this.lengte = lengte;
  }
  
  public void setTitel(String titel)
  {
    this.titel = titel;
  }
  
  public void setKleur(Color kleur)
  {
    this.kleur = kleur;
  }
  
  public void setXPositie(int xPositie)
  {
    this.xPositie = xPositie;
  }
  
  public void setPositie(int yPositie)
  {
    this.yPositie = yPositie;
  }
  
  //tekenen boek
  public void teken(Graphics g)
  {
	  g.setColor(kleur);
	  g.fillRect(xPositie, yPositie, breedte, lengte);

                  g.setColor(Color.BLACK);
                  g.drawString(titel, 90, 120);
  } 
}

En de PaneelKlasse

Code:
package stap0;
	
import javax.swing.*;

import stap0.Boek;
import java.awt.*;


	public class Stap0Paneel extends JPanel
	{
		private Boek mijnBoek;
		
	  public Stap0Paneel()
	  {
	    setBackground(Color.WHITE);
	    
	 // boek 1
	    mijnBoek = new Boek(40, 100, 40, 100, Color.cyan, "test" );
	  }
	  
	  //De boekenplank (zwart) tekenen
	  public void paintComponent(Graphics g)
	  {	    
		    super.paintComponent(g);
		    g.setColor(Color.BLACK);
		    g.drawLine(25,200,255,200);
		    mijnBoek.teken(g);
		    
		    // boek 2
		    mijnBoek.setKleur(Color.RED);
		    mijnBoek.setXPositie(80);
		    mijnBoek.teken(g);
		    
		    // boek 3
		    mijnBoek.setKleur(Color.GREEN);
		    mijnBoek.setXPositie(120);
		    mijnBoek.teken(g);
		   
	  }
	}
 
Laatst bewerkt:
Je kan ook een string painten.

Code:
g.drawSting("text", x, y);
Deze zet je in je paint of paintComponent functie
 
Dit leek mij inderdaad ook de meest voordehand liggende oplossing, alleen krijg ik telkens de "The method drawSting(String, int, int) is undefined for the type Graphics" foutmelding als ik dat probeer.

Toch bedankt voor de reactie!
gr. Jasper
 
Ik dacht dat je drawString alleen maar kan gebruiken in de Paint functie en niet in de paintComponent.
Weet het niet zeker
 
Hij gebruikt daar een variabele: titel voor. Die variabele moet je via de constructor een waarde geven.

hmm.. de titel is niet zichtbaar?
Probeer eens in klasse Huis met de volgende regel te spelen: g.setColor (Color.BLACK);
 
Ontzettend bedankt allemaal! :)

Het is me gelukt om een titel op een boek te zetten, de enige moeilijkheid is alleen nog dat de kleur van de titel nu "cyan" is, en dat is dezelfde kleur als het eerste boek. Als ik de kleur van het eerste boek wijzig, dan verander ik ook direct de kleur van de titel.

En ik neem aan dat ik voor meerdere titels (want elk boek heeft natuurlijk een andere titel), ik meer titels moet declareren (dus bijvoorbeeld titel1, titel2, titel3) en daarvoor dan ook aparte Getters en Setters moet aanmaken? :)

Ik ben in iedergeval al blij dat ik dankzij jullie hulp een titel heb kunnen toevoegen!
Nogmaals bedankt daarvoor,

gr. Jasper





Edit: De kleur heb ik kunnen wijzigen door in de Boek klasse, bij de PaintComponent methode de code g.setColor(Color.BLACK) in te voeren.
Nu moet ik er alleen nog achter zien te komen hoe ik meerdere verschillende titels toevoeg.

Edit2: Het probleem met de titels is ook opgelost!
Ik heb 3x mijnBoek aangemaakt (mijnBoek1, mijnBoek2, mijnBoek3) waardoor ik ze alledrie aparte titels heb kunnen geven!

Heel erg bedankt voor de hulp en oplossingen die ik van jullie heb gekregen,

groetjes, Jasper
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan