Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 12-02-2002, 15:33
apeldoorn
apeldoorn is offline
Ik heb een frame, en ik wil een plaatje in het frame tekenen. Dus ik een canvas maken en dat plaatje proberen te tekenen:
(Ps: this is het frame)

this.setSize(500,500);
this.setVisible(true);
Canvas c = new Canvas();
c.setSize(300,300);
this.add(c);

Toolkit tk = getToolkit();
bk = tk.getImage("Paddle.gif");
Graphics g = c.getGraphics();
g.drawImage(bk,0,0,null);

Alleen ik zie jammer genoeg niks op mijn schermpje verschijnen

Zou iemand kunnen vertellen wat ik fout doe, of een heel klein voorbeeld proggie hier neer kunnen zetten dat gewoon een plaatje inlaad en tekent op het canvas??
Met citaat reageren
Advertentie
Oud 12-02-2002, 15:37
Chimera
Avatar van Chimera
Chimera is offline
Het beste is een eigen Panel class maken.

Dus: public class MyPanel extends Panel

Dan override je paint():

public void paint(Graphics g) {
g.drawImage(bla bla bla);
}

Jouw methode werkt niet, omdat 'ie dan steeds leeggegooid wordt.
Met citaat reageren
Oud 12-02-2002, 15:38
Chimera
Avatar van Chimera
Chimera is offline
BTW: i.p.v. setVisible() kun je beter show() gebruiken, omdat dan ook de layout goedgezet wordt. I.p.v. show() kun je ook setVisible() en pack() gebruiken, doet 't zelfde.
Met citaat reageren
Oud 12-02-2002, 15:39
Chimera
Avatar van Chimera
Chimera is offline
En nog iets.

Het is:

Image image = Toolkit.getDefaultToolkit().getImage("plaatje.gif");
Met citaat reageren
Oud 12-02-2002, 15:45
apeldoorn
apeldoorn is offline
Zou je een heel klein (compleet) voorbeeldje kunnen geven zoals jij het precies zou doen?
Met citaat reageren
Oud 12-02-2002, 16:06
Chimera
Avatar van Chimera
Chimera is offline
Citaat:
apeldoorn schreef:
Zou je een heel klein (compleet) voorbeeldje kunnen geven zoals jij het precies zou doen?
Moment, ik knutsel ff wat inmekaar.
Met citaat reageren
Oud 12-02-2002, 16:09
apeldoorn
apeldoorn is offline
Als je een vrouw zou zijn, zou ik je zoenen!
Met citaat reageren
Oud 12-02-2002, 16:15
Chimera
Avatar van Chimera
Chimera is offline
Code:
import java.awt.*;

public class MyPanel extends Panel {
	private Image image;
	
	public MyPanel() {
		image = Toolkit.getDefaultToolkit().getImage("D:\\Data\\Niels\\Docs\\Pics\\icon1.jpg");
	}
	public static void main(java.lang.String[] args) {
		Frame frame = new Frame("Test");
		frame.setSize(320,240);
		MyPanel panel = new MyPanel();
		frame.add(panel);
		frame.show();
	}
	public void paint(Graphics g) {
		g.drawImage(image,0,0,this);
	}
}
Dit werkt bij mij in ieder geval. Gebruik je trouwens AWT (Frame, Panel) of Swing (JFrame, JPanel)? Ik ben hier van AWT uitgegaan, Swing werkt iets anders.
Met citaat reageren
Oud 12-02-2002, 16:16
Chimera
Avatar van Chimera
Chimera is offline
(Let neit op de volgorde van de methoden enzo, ik gebruik Visual Age, en geexporteerde code wordt altijd lelijk )
Met citaat reageren
Oud 12-02-2002, 16:22
apeldoorn
apeldoorn is offline
Het ziet er fantastisch uit En hij werkt ook nog....

Alleen ik had nog 1 vraagje (sorry )
Door wat of wie wordt paint(Graphics g) aangeroepen? Wordt die aangeroepen als er iets op het frame veranderd?
Met citaat reageren
Oud 12-02-2002, 16:27
Chimera
Avatar van Chimera
Chimera is offline
Yup. Die roep je dus niet zelf aan. Als je het plaatje opnieuw wil tekenen, roep je i.p.v. paint(Graphics g) repaint() aan. Het panel zorgt dan zelf voor het juiste Graphics object.

Op http://java.sun.com/ staan trouwens hele mooie tutorials daarover. Verder kan ik het boek Core Java: Fundamentals ook aanbevelen.
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar

Soortgelijke topics
Forum Topic Reacties Laatste bericht
Software & Hardware Compilatie mysterie java
apeldoorn
2 19-02-2002 10:24


Alle tijden zijn GMT +1. Het is nu 17:58.