Article View: borland.public.jbuilder.java.swing
Article #8874Paintproblem
From: sven goetgeluck
Date: Mon, 10 Jul 2000 00:00
Date: Mon, 10 Jul 2000 00:00
425 lines
16616 bytes
16616 bytes
--------------640A77904FF12D7355652EEF
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Hi have designd a "button" that extends a canvas for drawing
imagebuttons like in ie and sort so when you enter with mouse or click
other imgages are displayed on the button but when implenting them in
application into my buttonbar something weird happens
the buttons look great but when clikking on the menu above them them
come , display trough the menu
what can this be
greeting Sven
see source :
import java.awt.event.*;
import java.awt.image.*;
import java.net.*;
import java.awt.*;
public class ImageButton extends Canvas {
protected ActionListener actionListener = null;
int w,h;
boolean clicked;
boolean down;
boolean enabled;
boolean inside;
Image UPimage;
Image DOWNimage;
Image Dissableimage;
Image disabledimage;
public ImageButton(String up_b, String down_b)
{
clicked=false;
down=false;
enabled=true;
InitImage(up_b,down_b);
setSize(w,h);
addMouseListener(new ImageButtonMouseListener());
addMouseMotionListener(new ImageButtonMouseMotionListener());
}
public void InitImage(String up, String down) {
MediaTracker tracker;
try {
ImageIcon upimage = new ImageIcon(up);
ImageIcon downimage = new ImageIcon(down);
UPimage = upimage.getImage();
// UPimage = getToolkit().getImage(up);
DOWNimage = downimage.getImage();
// DOWNimage = getToolkit().getImage(down);
tracker = new MediaTracker(this);
tracker.addImage(UPimage,0);
tracker.addImage(DOWNimage,1);
tracker.waitForAll();
}
catch (InterruptedException e) {
e.printStackTrace();
}
disabledimage=createImage(new FilteredImageSource
(UPimage.getSource(),new ImageButtonDisableFilter()));
w=UPimage.getWidth(this);
h=UPimage.getHeight(this);
}
public void paint(Graphics g) {
/* if (down) {
g.drawImage(DOWNimage,0,0,this);
}
else {
if (enabled) {
g.drawImage(UPimage,0,0,this);
}
else {
g.drawImage(disabledimage,0,0,this);
}
}
*/
if (inside && !down && UPimage != null) {
g.drawImage(UPimage,0,0,null);
}
else if (down) {
g.drawImage(DOWNimage,0,0,this);
}
else {
g.drawImage(disabledimage,0,0,this);
}
}
public void setEnabled(boolean b) {
enabled=b;
repaint();
}
public boolean isEnabled() {
return (enabled);
}
public void addActionListener(ActionListener l) {
actionListener =
AWTEventMulticaster.add(actionListener,l);
}
public void removeActionListener(ActionListener l) {
actionListener =
AWTEventMulticaster.remove(actionListener, l);
}
public class ImageButtonMouseListener extends MouseAdapter
{
public void mouseEntered(MouseEvent e)
{
inside = true;
repaint();
}
public void mouseExited(MouseEvent e)
{
inside = false;
repaint();
}
public void mousePressed(MouseEvent e)
{
Point p = e.getPoint();
if ((p.x < w)&&(p.y < h)&&(p.x > 0)&&(p.y > 0)&&(enabled==true))
{
clicked=true;
down=true;
repaint();
}
}
public void mouseReleased(MouseEvent e)
{
Point p = e.getPoint();
if (down) {
down=false;
repaint();
}
if ((p.x < w)&&(p.y < h)&&(p.x > 0)&&(p.y > 0)&&(clicked==true))
{
ActionEvent ae =
new ActionEvent(e.getComponent(),0,"click");
if (actionListener != null) {
actionListener.actionPerformed(ae);
}
}
clicked=false;
}
}
public class ImageButtonMouseMotionListener extends
MouseMotionAdapter {
public void mouseEntered(MouseEvent e)
{
System.out.println("Enetered");
}
public void mouseDragged(MouseEvent e) {
Point p = e.getPoint();
if ((p.x < w)&&(p.y < h)&&(p.x > 0)&&(p.y > 0)&&(clicked==true))
{
if (down==false) {
down=true;
repaint();
}
}
else {
if (down==true) {
down=false;
repaint();
}
}
}
}
public Dimension getPreferredSize() {
return (new Dimension(UPimage.getWidth(this),
UPimage.getHeight(this)));
}
public Dimension getMinimumSize() {
return getPreferredSize();
}
class ImageButtonDisableFilter extends RGBImageFilter {
public ImageButtonDisableFilter() {
canFilterIndexColorModel=true;
}
public int filterRGB(int x, int y, int rgb) {
return (rgb & ~0xff000000) | 0x80000000;
}
}
}
--------------640A77904FF12D7355652EEF
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
Hi have designd a "button" that extends a canvas for drawing imagebuttons
like in ie and sort so when you enter with mouse or click other imgages
are displayed on the button but when implenting them in application into
my buttonbar something weird happens
<br>the buttons look great but when clikking on the menu above them them
come , display trough the menu
<br>what can this be
<p>greeting Sven
<br>
<p><b>see source :</b>
<br>
<p>import java.awt.event.*;
<br> import java.awt.image.*;
<br> import java.net.*;
<br>import java.awt.*;
<p> public class ImageButton extends Canvas {
<br> protected ActionListener actionListener = null;
<br> int w,h;
<br> boolean clicked;
<br> boolean down;
<br> boolean enabled;
<br> boolean inside;
<br> Image UPimage;
<br> Image DOWNimage;
<br> Image Dissableimage;
<br> Image disabledimage;
<p> public ImageButton(String up_b, String down_b)
<br> {
<br> clicked=false;
<br> down=false;
<br> enabled=true;
<br> InitImage(up_b,down_b);
<br> setSize(w,h);
<br> addMouseListener(new ImageButtonMouseListener());
<br> addMouseMotionListener(new ImageButtonMouseMotionListener());
<br> }
<p> public void InitImage(String up, String down) {
<br> MediaTracker tracker;
<br> try {
<br> ImageIcon upimage = new
ImageIcon(up);
<br> ImageIcon downimage =
new ImageIcon(down);
<br> UPimage = upimage.getImage();
<br>// UPimage = getToolkit().getImage(up);
<br> DOWNimage = downimage.getImage();
<br> // DOWNimage = getToolkit().getImage(down);
<br> tracker = new MediaTracker(this);
<br> tracker.addImage(UPimage,0);
<br> tracker.addImage(DOWNimage,1);
<br> tracker.waitForAll();
<br> }
<br> catch (InterruptedException e) {
<br> e.printStackTrace();
<br> }
<br> disabledimage=createImage(new FilteredImageSource
<br> (UPimage.getSource(),new
ImageButtonDisableFilter()));
<br> w=UPimage.getWidth(this);
<br> h=UPimage.getHeight(this);
<br> }
<p> public void paint(Graphics g) {
<br>/* if (down) {
<br> g.drawImage(DOWNimage,0,0,this);
<br> }
<br> else {
<br> if (enabled) {
<br> g.drawImage(UPimage,0,0,this);
<br> }
<br> else {
<br> g.drawImage(disabledimage,0,0,this);
<br> }
<br> }
<br> */
<br> if (inside && !down && UPimage !=
null) {
<br> g.drawImage(UPimage,0,0,null);
<br> }
<br> else if (down) {
<br> g.drawImage(DOWNimage,0,0,this);
<br> }
<br> else {
<br> g.drawImage(disabledimage,0,0,this);
<br> }
<br>
<br>
<br>
<p> }
<p> public void setEnabled(boolean b) {
<br> enabled=b;
<br> repaint();
<br> }
<p> public boolean isEnabled() {
<br> return (enabled);
<br> }
<p> public void addActionListener(ActionListener l) {
<br> actionListener =
<br> AWTEventMulticaster.add(actionListener,l);
<br> }
<br> public void removeActionListener(ActionListener
l) {
<br> actionListener =
<br> AWTEventMulticaster.remove(actionListener,
l);
<br> }
<p> public class ImageButtonMouseListener extends MouseAdapter
<br> {
<br> public void mouseEntered(MouseEvent
e)
<br> {
<br> inside = true;
<br> repaint();
<br> }
<br> public void mouseExited(MouseEvent e)
<br> {
<br> inside = false;
<br> repaint();
<p> }
<br> public void mousePressed(MouseEvent
e)
<br> {
<br> Point p = e.getPoint();
<br> if ((p.x < w)&&(p.y
< h)&&(p.x > 0)&&(p.y > 0)&&(enabled==true))
{
<br> clicked=true;
<br> down=true;
<br> repaint();
<br> }
<br> }
<br> public void mouseReleased(MouseEvent
e)
<br> {
<br> Point p = e.getPoint();
<br> if (down) {
<br> down=false;
<br> repaint();
<br> }
<br> if ((p.x < w)&&(p.y
< h)&&(p.x > 0)&&(p.y > 0)&&(clicked==true))
{
<br> ActionEvent
ae =
<br>
new ActionEvent(e.getComponent(),0,"click");
<br> if (actionListener
!= null) {
<br>
actionListener.actionPerformed(ae);
<br>
}
<br> }
<br> clicked=false;
<br> }
<p> }
<p> public class ImageButtonMouseMotionListener extends
<br> MouseMotionAdapter {
<br> public void mouseEntered(MouseEvent
e)
<br> {
<br> System.out.println("Enetered");
<br> }
<br> public void mouseDragged(MouseEvent
e) {
<br> Point p = e.getPoint();
<br> if ((p.x < w)&&(p.y
< h)&&(p.x > 0)&&(p.y > 0)&&(clicked==true))
{
<br> if (down==false)
{
<br>
down=true;
<br>
repaint();
<br>
}
<br> }
<br> else {
<br> if (down==true)
{
<br>
down=false;
<br>
repaint();
<br>
}
<br> }
<br> }
<br> }
<p> public Dimension getPreferredSize() {
<br> return (new Dimension(UPimage.getWidth(this),
<br>
UPimage.getHeight(this)));
<br> }
<p> public Dimension getMinimumSize() {
<br> return getPreferredSize();
<br> }
<p> class ImageButtonDisableFilter extends RGBImageFilter
{
<br> public ImageButtonDisableFilter()
{
<br> canFilterIndexColorModel=true;
<br> }
<br> public int filterRGB(int x, int
y, int rgb) {
<br> return (rgb &
~0xff000000) | 0x80000000;
<br> }
<br> }
<p> }
<br>
<br> </html>
--------------640A77904FF12D7355652EEF--
Technical Details
Message-ID:
<39698078.B0D4C320@officeline.be>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 111d45,1ac40abb3e2e6f3,start X-Google-Attributes: gid111d45,public From: sven goetgeluck <sven@officeline.be> Subject: Paintproblem Date: 2000/07/10 Message-ID: <39698078.B0D4C320@officeline.be> X-Deja-AN: 644517052 X-Accept-Language: en Content-Type: multipart/alternative; boundary="------------640A77904FF12D7355652EEF" X-Trace: 10 Jul 2000 00:41:05 -0800, 127.0.0.1 MIME-Version: 1.0 Newsgroups: borland.public.jbuilder.java.swing