Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   Plaatje inladen in java (https://forum.scholieren.com/showthread.php?t=13312)

apeldoorn 12-02-2002 15:33

Plaatje inladen in java
 
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 http://forum.scholieren.com/frown.gif

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??

Chimera 12-02-2002 15:37

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.

Chimera 12-02-2002 15:38

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.

Chimera 12-02-2002 15:39

En nog iets.

Het is:

Image image = Toolkit.getDefaultToolkit().getImage("plaatje.gif");

apeldoorn 12-02-2002 15:45

Zou je een heel klein (compleet) voorbeeldje kunnen geven zoals jij het precies zou doen?

Chimera 12-02-2002 16:06

Citaat:

apeldoorn schreef:
Zou je een heel klein (compleet) voorbeeldje kunnen geven zoals jij het precies zou doen?
Moment, ik knutsel ff wat inmekaar.

apeldoorn 12-02-2002 16:09

Als je een vrouw zou zijn, zou ik je zoenen! http://forum.scholieren.com/smile.gif

Chimera 12-02-2002 16:15

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.

Chimera 12-02-2002 16:16

(Let neit op de volgorde van de methoden enzo, ik gebruik Visual Age, en geexporteerde code wordt altijd lelijk http://forum.scholieren.com/biggrin.gif)

apeldoorn 12-02-2002 16:22

Het ziet er fantastisch uit http://forum.scholieren.com/smile.gif En hij werkt ook nog....

Alleen ik had nog 1 vraagje (sorry http://forum.scholieren.com/biggrin.gif)
Door wat of wie wordt paint(Graphics g) aangeroepen? Wordt die aangeroepen als er iets op het frame veranderd?

Chimera 12-02-2002 16:27

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.


Alle tijden zijn GMT +1. Het is nu 09:56.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.