[java] problem display .gif
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);
}
}
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
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
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.
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.
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
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)
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
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement