1 van 2
[java] rechthoek afbeelden
Geplaatst: di 29 apr 2008, 19:31
door Ruben01
Ik heb de volgende opgave in mijn cursus staan:
Schrijf een programma waarin je gebruik maakt van een methode voor het afbeelden van een rechthoek op het scherm.
Mijn vraag: Hoe begin ik aan zoiets ? In mijn cursus staat niks over een bestaande drawing methode ofzo, kan er iemand mij iets meer over vertellen en hoe ik dat dan juist moet programmeren.
Re: [java] rechthoek afbeelden
Geplaatst: di 29 apr 2008, 19:46
door Cycloon
De klasse Graphics kan dat
http://java.sun.com/j2se/1.5.0/docs/api/ja...t/Graphics.html
drawRect(int x, int y, int width, int height) om precies te zijn
Re: [java] rechthoek afbeelden
Geplaatst: di 29 apr 2008, 20:29
door Ruben01
Waarschijnlijk een domme vraag maar ik kan niet direct een antwoord vinden.
Ik heb een klein programma voor het tekenen van mijn rechthoek, dit is geschreven in JCreator en wanneer ik mijn bestand run dan gebeurd dit standaard in het cmd-venster.
Hier kun je geen grafische zaken weergeven, waar kan ik kijken of mijn rechthoek geslaagd is ?
Re: [java] rechthoek afbeelden
Geplaatst: di 29 apr 2008, 22:18
door Cycloon
Dat gaat wel, dan krijg je een extra kadertje tezien met je figuur. Maar dat is best wel nogal een stukje extra code. Ik heb hier wel wat stukken code staan, maar volgens mij is het niet de bedoeling dat je zo ver gaat (je hebt bv overerving nodig om het JPanel te extenden en ik vermoed dat je nog niet zo ver zit).
Ik zat zo net te denken of men niet gewoon wil dat je zelf een methode schrijft die aan de hand van sterretjes ofzoiets een rechthoekje tekent?
Re: [java] rechthoek afbeelden
Geplaatst: di 29 apr 2008, 23:05
door Ruben01
Het is een extra opgave in de cursus onder het hoofdstuk statische methoden.
Het denk ik niet de bedoeling dat wat zo'n gans paneel kunnen maken e.d. maar als tussendoortje wou ik gewoon graag de oefening oplossen, enkele zaken opzoeken en ondertussen wat bijleren.
Ik heb ondertussen al wat zitten rondneuzen op wikipedia en daar heb ik iets gevonden hoe je een "Canvas" moet programmeren:
http://en.wikibooks.org/wiki/Java_Programming/Canvas
Ik wou eens testen of ik iets tevoorschijn krijg maar wanneer ik de onderstaande code uitvoer krijg ik 2 errors:
import java.awt.*;
import javax.swing.*;
public class MyCanvas extends Canvas
{
public MyCanvas()
{
}
public void paint(Graphics graphics)
{
}
public static void main(String[] args)
{
MyCanvas canvas = new MyCanvas(); // We initialize our class here
JFrame frame = new JFrame();
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(canvas); // Here we add it to the frame
frame.setVisible(true);
}
}
Als ik de code uitvoer krijg ik:
-non-static variable this cannot be referenced from a static context
-inner classes cannot have static declarations
Mijn stukje code voor de rechthoek, bijvoorbeeld: (moet nog wel aangepast worden zodat ik mijn lengte e.d. kan inlezen)
public void paint(Graphics graphics)
{
graphics.drawLine(10, 20, 300, 310);
}
Zou ik dus ergens in de stuk code voor het canvas moeten krijgen (dat natuurlijk eerst moet werken).
Weet er iemand een oplossing voor het canvas probleem en het integreren van de rechthoek ?
Re: [java] rechthoek afbeelden
Geplaatst: di 29 apr 2008, 23:22
door Ruben01
Dankzij WSF gebruiker Evil Lathander is mijn probleem opgelost.
De code van wikipedia werkt perfect maar ze mag blijkbaar niet ergens in een andere classa ingevoegd worden.
Bedankt voor de hulp iedereen
Re: [java] rechthoek afbeelden
Geplaatst: wo 30 apr 2008, 08:36
door jhnbk
Dit onderwerp past beter in het subforum programmeren en is zodoende verplaatst.
Re: [java] rechthoek afbeelden
Geplaatst: wo 30 apr 2008, 13:53
door Cycloon
De vraag is nu natuurlijk of je er wat aan hebt gehad? Ik vermoed eerlijk gezegd van niet
Re: [java] rechthoek afbeelden
Geplaatst: wo 30 apr 2008, 18:01
door Ruben01
De vraag is nu natuurlijk of je er wat aan hebt gehad? Ik vermoed eerlijk gezegd van niet
Ik heb er wel wat aan gehad hoor, ik begrijp misschien de code voor het Frame niet tot in het detail maar ik zou het wel kunnen reproduceren bij een gelijkaardige opgave.
Na een beetje gepruts met verschillende parameters weet ik wel hoe ik het Frame naar mijn wensen kan aanpassen wat voor mij voldoende is momenteel !
Re: [java] rechthoek afbeelden
Geplaatst: wo 30 apr 2008, 19:01
door Cycloon
Dit was trouwens geen statische methode, maar ik vermoed dat je wel doorhebt wat een statische methode is?
Re: [java] rechthoek afbeelden
Geplaatst: wo 30 apr 2008, 19:07
door jhnbk
Onder voorbehoud:
een statische methode is een methode die enkel binnen de klasse te gebruiken is?
Klopt dit? (Of zit mijn kennis van talen die dit gebruiken zo ver weg ...)
Re: [java] rechthoek afbeelden
Geplaatst: wo 30 apr 2008, 19:09
door Cycloon
Een statische methode is een methode die je kan oproepen zonder dat je een object hoeft te maken van de klasse waar ze in zit. Bv Math.round()
Je kan enkel een statische methode definiƫren indien die methode geen enkele variabele aanspreekt van de klasse zelf.
Re: [java] rechthoek afbeelden
Geplaatst: wo 30 apr 2008, 19:14
door jhnbk
Is dat in C# ook zo, want dan is de uitleg in het boek voor mij niet te begrijpen ...?
Re: [java] rechthoek afbeelden
Geplaatst: wo 30 apr 2008, 19:14
door Ruben01
Dit was trouwens geen statische methode, maar ik vermoed dat je wel doorhebt wat een statische methode is?
Ik wist dat het geen statische methode is, die rechthoek is namelijk een object die gevormd wordt door de constructor drawRect(int,int,int,int).
Re: [java] rechthoek afbeelden
Geplaatst: wo 30 apr 2008, 19:22
door Cycloon
Is dat in C# ook zo, want dan is de uitleg in het boek voor mij niet te begrijpen ...?
Ik vermoed van wel (ik ken geen C#), maar wat jij beschrijft is gewoon een private methode
Ik wist dat het geen statische methode is, die rechthoek is namelijk een object die gevormd wordt door de constructor drawRect(int,int,int,int).
drawRect() is een methode, geen constructor. De constructor is Graphics() (die hier dan nog eens protected is waardoor je deze niet kan oproepen zonder de klasse Graphics te extenden).