Just nu i M3-nätverket
Gå till innehåll

Panel helt blank


Patricia

Rekommendera Poster

Hej, finns här nån vänlig själ som kan tala om om jag missat något i min kod. Jag har skapat de konstruktorer och metoder samt variabler som min lärare kräver för denna uppgift och ändå fungerar det inte.

Den här koden ska generera 2 stycken rektanglar i olika färger och deras area och omkrets ska räknas ut när man exekverar programmet men ingenting fungerar. Eller jo, panelen ploppar upp men är helt blank, men inget annat. Frågade en kompis till mig som sa att jag gjort rätt men varför funkar det då inte? Här är min kod, jag har skapat två olika klasser i två olika filer. Den första klassen anropar GUIklassen genom en nytt rektangelobjekt

 

 

import javax.swing.JFrame;
public class Paron {


   public static void main(String[] args) {

     JFrame f = new JFrame();
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     Rektanglar r = new Rektanglar (0,0,0,0);
     f.add(r);
	f.setSize(400, 250);
     f.setVisible(true);

   }
}


och här är själva GUI koden


[code]
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;

public class Rektanglar extends JPanel {

	//Deklarerar variabler med värden på bredd, höjd, x och y axel för rektanglarna
   private int  x = 100, y = 30, bredd = 100, hojd = 50;


     //Skapa konstruktor för att skapa object av klassen rektanglar
     Rektanglar (int x, int y, int bredd, int hojd ){

     this.x = x;
     this.y = y;
     this.bredd= bredd;
     this.hojd = hojd;
  	}

	//Metoder för att returnera värden 
   public void setX(int x){
   this.x = x; }

   public void setY(int y){
   this.y = y; }

   public int getX(int x){
       return this.x; }

   public int getY(int y){
       return this.y; }

   public int getBredd(){
       return this.bredd ;}

   public int getHojd(){
       return this.hojd ;}

   public int getOmkrets(){

       return (this.bredd *2  + this.hojd * 2);}
   public int getArea(){

       return (this.hojd * this.bredd);}


  //paint metoden som sätter färg på bakgrund och rektanglar
   @Override
   public void paintComponent (Graphics g) {

  	super.paintComponent (g);
  	g.drawString ("Rektanglar",10,20);
  	this.setBackground(Color.WHITE);

  	g.setColor(Color.BLUE);
  	g.fillRect (x,y, bredd, hojd);

  	g.setColor(Color.GREEN);
  	g.fillRect(x,y, bredd, hojd);
   }

}

 

 

 

Tacksam för svar

Länk till kommentar
Dela på andra webbplatser

Du verkar sätta bredd och höjd på rektanglar till 0. Rektanglar(0, 0, 0, 0);. Det är en möjlig felkälla.

 

Sen ritar du ut båda rektanglarna på samma plats så du kommer ändå bara se en om du hade haft en storlek på dessa. Du bör visserligen se din g.drawString tycker jag. Vet inte riktigt varför den inte syns.

Länk till kommentar
Dela på andra webbplatser

Du verkar sätta bredd och höjd på rektanglar till 0. Rektanglar(0, 0, 0, 0);. Det är en möjlig felkälla.

 

Sen ritar du ut båda rektanglarna på samma plats så du kommer ändå bara se en om du hade haft en storlek på dessa. Du bör visserligen se din g.drawString tycker jag. Vet inte riktigt varför den inte syns.

 

Hej, tack för svar. Jo den syns, sorry det glömde jag tillägga.

BOrde jag sätta samma värden i Rektanglar som jag gjort i variablarna hojd,bredd,x, och y?

Känns som att de kommer överlappa varandra... jag är lite kluven nu :/

Länk till kommentar
Dela på andra webbplatser

Börja med att där du skapar Rektanglarobjektet dvs Rektanglar(0,0,0,0) ge den några fiffiga värden. Till exempel Rektanglar(0, 0, 100, 50) och se om det hjälper.

 

Sen får du i ditt andra anrop till g.fillRect fundera på hur du ska undvika att rektanglarna ritar på samma plats.

 

Det bästa är nog att du istället för att låta ett objekt rita ut två rektanglar. Skapa två objekt som ritar ut var sin rektangel.

Länk till kommentar
Dela på andra webbplatser

Börja med att där du skapar Rektanglarobjektet dvs Rektanglar(0,0,0,0) ge den några fiffiga värden. Till exempel Rektanglar(0, 0, 100, 50) och se om det hjälper.

 

Sen får du i ditt andra anrop till g.fillRect fundera på hur du ska undvika att rektanglarna ritar på samma plats.

 

Det bästa är nog att du istället för att låta ett objekt rita ut två rektanglar. Skapa två objekt som ritar ut var sin rektangel.

 

 

 

Ja precis, har skapat två rektangelobjekt nu och tilldelat värden men verkar inte funka ändå. Jag får trixa lite till, får nog det att fungera tillslut.

tack så hjärtligt för svaren och hjälpen. :)

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...