aspose file tools*
The moose likes Swing / AWT / SWT and the fly likes avoiding flickering Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of EJB 3 in Action this week in the EJB and other Java EE Technologies forum!
JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "avoiding flickering " Watch "avoiding flickering " New topic
Author

avoiding flickering

basha khan
Ranch Hand

Joined: Jan 18, 2002
Posts: 87
hi ranchers,

how can i put an image on background in a JPanel without overriding its paint() method?.i am having some dragging components over it.
i had overrided paint() method of JPanel to put background image,but inconsistent flickering occurs.how can i resolve the problom?.

anybody plz..
basha
Nathan Pruett
Bartender

Joined: Oct 18, 2000
Posts: 4121

Could you post the code for the JPanel you are having the problems with?

Though, one of my first suggestions would be to override paintComponent() rather than paint()...


-Nate
Write once, run anywhere, because there's nowhere to hide! - /. A.C.
basha khan
Ranch Hand

Joined: Jan 18, 2002
Posts: 87
hi nate nice to see u.
i need a background image in JFrame.i need some labels dragging on that image(above the image).
i had painted an image in JFrame
i had added jLabels on ContentPane of that frame
how can i paint my image on contentpane?.i think that 'll solve the problom.
here is a sample code..
save 2 gif images on current directory and rename as 'backgroundimage.gif' and 'labelimage.gif'. then run the code

import javax.swing.*;
import java.awt.*;
public class Sample1 extends javax.swing.JFrame
{
public Sample1()
{
initComponents ();
draw();
setSize(400,300);
}
private void initComponents()
{//GEN-BEGIN:initComponents
addWindowListener(new java.awt.event.WindowAdapter()
{
public void windowClosing(java.awt.event.WindowEvent evt)
{
exitForm(evt);
}
}
);
}//GEN-END:initComponents
/** Exit the Application */
private void exitForm(java.awt.event.WindowEvent evt)
{//GEN-FIRST:event_exitForm
System.exit (0);
}//GEN-LAST:event_exitForm
public void draw()
{
for(int i=0;i<10;i++)
{
alabel=new ALabel();
this.getContentPane().add(alabel,0);
alabel.setBounds(20,20+(i<<2),140,200);
alabel.setVisible(true);
}
this.alabel.addMouseListener(new java.awt.event.MouseAdapter()
{
public void mousePressed(java.awt.event.MouseEvent me)
{
}
public void mouseReleased(java.awt.event.MouseEvent me)
{
((javax.swing.JLabel)me.getSource()).setBounds(me.getX(),me.getY(),140,200);
}
});
this.alabel.addMouseMotionListener(new java.awt.event.MouseMotionAdapter()
{
public void mouseDragged(java.awt.event.MouseEvent me)
{
Component c = (Component)me.getSource();
Point p = me.getPoint();
p = SwingUtilities.convertPoint( c, p, Sample1.this );
c.setLocation( p );
c.setBounds((int)p.getX(),(int)p.getY(),140,200);
c.setVisible(true);
}
});
}
public void paint(java.awt.Graphics g)
{
g.drawImage((new javax.swing.ImageIcon("backgroundimage.gif")).getImage(),10,10,this);
//g.drawImage(Toolkit.getDefaultToolkit().createImage("backgroundimage.gif"),10,10,this);
//not getting the image
}
/**
* @param args the command line arguments
*/
public static void main (String args[])
{
new Sample1 ().show ();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel alabel;
// End of variables declaration//GEN-END:variables
}
// label
class ALabel extends javax.swing.JLabel {
public ALabel()
{
this.setIcon(new javax.swing.ImageIcon("labelimage.gif"));
}
}

i need bacground images on Desktoppane also.how can i achieve that using aggregation instead of subclassing and overriding Paint() of jDesktopPane?.
lovingly
basha
Nathan Pruett
Bartender

Joined: Oct 18, 2000
Posts: 4121

Hmmm... there were lots of problems with the code... I *think* the problem that was causing the flickering was the overridden paint method for the JFrame, you should probably make it a JPanel and override the JPanel's paintComponent() method. Also, you were re-loading the background image every time it needed to repaint. This was also probably adding to the flicker problem. Here's a fixed version that I think does what you want it to:



Here is another post that I gave code for how to add a background image to a JDesktopPane...
basha khan
Ranch Hand

Joined: Jan 18, 2002
Posts: 87
thanks nate..
u r really helpfull to me.i love people like u who really having some value on most dimensions...
take care ...
basha
 
 
subject: avoiding flickering
 
Similar Threads
IMAGE FLICKERING
how to convert a light-weight into a heavy-weight component?
How to add an Image to a frame
Is this possible to do?
Image as a background