Its driving me crazy....drawImage() help please

Hi guys ..

a set of fresh eyes is all I need...

In the following program its very simple, but I can't make it work..

I want to draw a simple image over a background ...

the thing is it DOESN'T work, it only loads the image if I click on the frame or resize it....if I take all the listeners out then it doesn't show a thing..........

import javax.swing.*;

import java.awt.*;

import java.awt.image.*;

import java.awt.event.*;

import java.util.Properties;

import java.io.*;

import java.util.StringTokenizer;

import java.util.Vector;

public class l extends JPanel implements MouseMotionListener, MouseListener

{

private BufferedImage offscreenBuffer;

Toolkit toolkit = Toolkit.getDefaultToolkit();

Image backgroundImage,image1;

public l(){

//BufferedImage.TYPE_4BYTE_ABGR

this.offscreenBuffer = new BufferedImage(800, 400, BufferedImage.TYPE_3BYTE_BGR);

this.paintNoComponent();

this.addMouseListener(this);

this.addMouseMotionListener(this);

}

public void paintNoComponent()

{

paintComponent(this.getGraphics());

}

public void paintOffscreen(Graphics g)

{

if(g == null)

{

return;

}

//g.setColor(backgroundColor);

g.fillRect(0, 0, getWidth(), getHeight());

backgroundImage=toolkit.getImage("kj.png");

g.drawImage(backgroundImage, 0, 0, this);

image1 = toolkit.getImage("t18.png");

g.drawImage(image1,0,0,this);

}

public void paintComponent(Graphics g)

{

if(g == null)

{

return;

}

paintOffscreen(offscreenBuffer.getGraphics());

g.drawImage(offscreenBuffer, 0, 0, null);

System.out.println("-X->>");

}

//MouseListener methods

public void mousePressed(MouseEvent me)

{

int col = (me.getX()-20)/45;

int row = (me.getY()-20)/45;

System.out.println(col+" "+row);

if(row < 0 || col < 0 || row > 7 || col > 7)

{

return;

}

}

public void mouseReleased(MouseEvent me)

{

paintNoComponent();

}

public void mouseClicked(MouseEvent me)

{

}

//MouseMotionListener methods

public void mouseMoved(MouseEvent me)

{

}

public void mouseDragged(MouseEvent me)

{

int movingX = me.getX();

int movingY = me.getY();

paintNoComponent();

}

public void mouseEntered(MouseEvent me)

{

}

public void mouseExited(MouseEvent me)

{

}

}

import javax.swing.*;

import java.awt.*;

import java.awt.image.*;

import java.awt.event.*;

import java.util.Properties;

import java.io.*;

class tetframe

{

public static void main (String args[])

{

JFrame frame=new JFrame();

//toSee nt=new toSee();

l nt=new l();

frame.getContentPane().add(nt);

frame.setSize(810,420);

frame.setVisible(true);

}

}

[3099 byte] By [Java_seeda] at [2007-11-27 3:57:04]
# 1

import java.awt.*;

import java.awt.image.BufferedImage;

import java.awt.event.*;

import javax.swing.*;

public class LRx extends JPanel implements MouseMotionListener, MouseListener

{

private BufferedImage offscreenBuffer;

Image backgroundImage,image1;

public LRx()

{

loadImages();

this.addMouseListener(this);

this.addMouseMotionListener(this);

}

private void loadImages()

{

Toolkit toolkit = Toolkit.getDefaultToolkit();

// See Toolkit getImage Method Detail for why

// creatImage may be a better choice here.

backgroundImage=toolkit.createImage("kj.png");

//"images/owls.jpg");

image1 = toolkit.createImage("t18.png");

//"images/Bird.gif");

// Load the data for the images.

MediaTracker tracker = new MediaTracker(this);

tracker.addImage(backgroundImage, 0);

tracker.addImage(image1, 0);

try

{

tracker.waitForAll();

}

catch(InterruptedException e)

{

System.out.println("interrupted");

}

}

private void initOffscreenBuffer()

{

//BufferedImage.TYPE_4BYTE_ABGR

int w = getWidth();

int h = getHeight();

int type = BufferedImage.TYPE_3BYTE_BGR;

this.offscreenBuffer = new BufferedImage(w, h, type);

Graphics g = offscreenBuffer.getGraphics();

g.setColor(getBackground());

g.fillRect(0, 0, getWidth(), getHeight());

g.drawImage(backgroundImage, 0, 0, this);

g.drawImage(image1,0,0,this);

g.dispose();

}

protected void paintComponent(Graphics g)

{

if(offscreenBuffer == null)

{

// We know we have a good width/height for this

// component available on the first trip thru

// this method. So this is a good place to

// initialize an offscreenBuffer.

initOffscreenBuffer();

}

// For drawing an offscreenImage this is all that

// you have to do in this method.

g.drawImage(offscreenBuffer, 0, 0, null);

System.out.println("-X->>");

}

/** Call this from your event code. */

private void updateOffscreenBuffer() {

Graphics g = offscreenBuffer.getGraphics();

// Here you can set the background color and fill it to

// start over or you can draw new things on the image.

g.dispose();

}

//MouseListener methods

public void mousePressed(MouseEvent me)

{

int col = (me.getX()-20)/45;

int row = (me.getY()-20)/45;

System.out.println(col+" "+row);

if(row < 0 || col < 0 || row > 7 || col > 7)

{

return;

}

}

public void mouseReleased(MouseEvent me) {}

public void mouseClicked(MouseEvent me){}

//MouseMotionListener methods

public void mouseMoved(MouseEvent me){}

public void mouseDragged(MouseEvent me)

{

int movingX = me.getX();

int movingY = me.getY();

// Update the buffer if you want

// updateOffscreenImage();

// Or you can change member variables that will be

// drawn in paintComponent, on top-of/above the image.

// Then just redraw:

// Tell this component to repaint itself.

repaint();

}

public void mouseEntered(MouseEvent me) {}

public void mouseExited(MouseEvent me) {}

public static void main (String args[])

{

JFrame frame=new JFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//toSee nt=new toSee();

LRx nt=new LRx();

frame.getContentPane().add(nt);

frame.setSize(810,420);

frame.setVisible(true);

}

}

crwooda at 2007-7-12 9:01:22 > top of Java-index,Security,Cryptography...