[java] problem display .gif

Started by
7 comments, last by lupine 23 years, 3 months ago
just a tiny square comes up where the top left of teh .gif should be can someone please tell me what the corresponding .html of the following code should look like? I think thts whare the problem is ________________________________________________________________ import java.awt.*; import java.applet.*; import java.net.*; public class TrivialApplet extends Applet { Image snake; public void init() { URL codeBase = getCodeBase(); snake = getImage(codeBase, "snake.gif"); resize(250, 250); } public void paint(Graphics g) { int width = snake.getWidth(this); int height = snake.getHeight(this); g.drawRect(52, 52, width+10, height+10); g.drawImage(snake, 57, 57, width, height, this); } }
"do you like my helmut?"-yoghurt
Advertisement
Check to see if the width and height is being set to 0.
hmmmm...
i take you to mean that getwidth and get height are failing
and defaulting to ZERO.

I tried changing height, width

to 60,60 same result

I get no warnings or errors.

I''ll put up the .html
"do you like my helmut?"-yoghurt
I tried the code.

If the snake.gif is not found then height and width are set to -1, resulting in only a rectangle being shown.
g.drawRect(52, 52, (-1)+10, (-1)+10);

Write out the codebase to determine where to put snake.gif.

could also be that snake.gif is being found, but not being loaded. getImage returns immedietly and if you try to get the height & width before the image is completely loaded you will bet -1 also. Try adding

while (! snake.getHeight(null) );

to the init() function.
I'm not sure if this it but I remember someone else having a similar problem.

Basically when you use the method getImage() it returns straight away and the image isn't actually loaded until the first time it's drawn. This means that when you are calling getWidth() and getHeight() for the first time the image hasn't actually been loaded yet so they return 0 as there's no image to obtain the data from yet. This would explain the tiny square being drawn.

I can't remeber the exact solution to this problem but I remeber that it involved using the ImageObserver interface. I think it was used to preload the image before getWidth( ) and getHeight() were called. I hope this is of some help to you.

- Cedric Kerr

Edited by - DarkScholar on January 2, 2001 3:54:26 PM
yeah I had/have a similar problem. I''m going to use a MediaTracker to fix it. I''ll just pile all my images into it, then wait until it is done, and then proceed with the rest of my program
quote:Original post by Anonymous Poster

yeah I had/have a similar problem. I''m going to use a MediaTracker to fix it. I''ll just pile all my images into it, then wait until it is done, and then proceed with the rest of my program


HMMM...
I''m not familiar with MediaTracker
is that part of java or is it a third party deal?
anyway I kind of need to know exactly why it dosent work
so I can become ninja.

thank you to everyone for your insights,
I have rewritten the program.
(I was actually following a certain tutorial which will remain nameless)
-----------------------------------------------------------------
import java.applet.*;
import java.awt.*;

public class Applet1 extends Applet
{

private Font ONEfont;
public void init()
{
Image lion;
lion= getImage(getCodeBase(),"DB1001.gif");
ONEfont=new Font("Courier",Font.BOLD,48);
setFont(ONEfont);
setBackground(Color.blue);

}
public void paint (Graphics g)
{

g.drawString("Hello World!", 50, 40);
//g.drawImage(lion, 50, 70,this);
//getting a variable not defined message
}
}
-----------------------------------------------------------------

as you can see getting lion=not defined
if I copy the:

Image lion;
lion= getImage(getCodeBase(),"DB1001.gif");

down into the paint method it eliminates the error
and the program runs... without displaying the .gif
which is the same as the problem with the original
program, interesting, yes?
so, I''m keeping the program as above, I''d rather have
a known error then some ghost .gif
(btw I changed the .gif on the off chance there might be a problem there)
"do you like my helmut?"-yoghurt
quote:Original post by tunabox

I tried the code.

If the snake.gif is not found then height and width are set to -1, resulting in only a rectangle being shown.
g.drawRect(52, 52, (-1)+10, (-1)+10);

Write out the codebase to determine where to put snake.gif.


you, of course, were right about g.drawRect
what do you think of the rewrite/still getting same problem

"do you like my helmut?"-yoghurt

This topic is closed to new replies.

Advertisement