Patricia Posted July 17, 2013 Share Posted July 17, 2013 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 Link to comment Share on other sites More sharing options...
.M Posted July 17, 2013 Share Posted July 17, 2013 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. Link to comment Share on other sites More sharing options...
Patricia Posted July 17, 2013 Author Share Posted July 17, 2013 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 :/ Link to comment Share on other sites More sharing options...
.M Posted July 17, 2013 Share Posted July 17, 2013 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. Link to comment Share on other sites More sharing options...
Patricia Posted July 17, 2013 Author Share Posted July 17, 2013 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. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.