Article View: borland.public.jbuilder.java.swing
Article #8659explorer like button in bar
From: sven goetgeluck
Date: Thu, 27 Jul 2000 00:00
Date: Thu, 27 Jul 2000 00:00
160 lines
4298 bytes
4298 bytes
Hi , i have made an button like in windows explorer with mouse over
capabilities
he works fine in an panel , but when trying it into the buttonbar he
doesn't show like it should be , the does not paint completely , but
works fine
paints only parts of the button
how can this be solved ?
enclosed the source of the button below
greetings sven
package vrex4;
import java.awt.Graphics;
import javax.swing.*;
import java.awt.event.*;
import java.awt.Image;
import java.awt.Component;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.net.*;
import java.awt.*;
public class MyExplorerImageButton extends JButton{
private String upimage = null;
private String downimage = null;
Image DISimage = null;
Image UPimage = null;
Image DOWNimage = null;
boolean inside = false;
boolean press = false;
int w,h;
public MyExplorerImageButton() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
public MyExplorerImageButton(String up_b, String down_b)
{
upimage = new String(up_b);
downimage = new String (down_b);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
public void paint(Graphics g) {
//TODO: override this javax.swing.JComponent method;
super.paint( g);
Dimension dim = this.getPreferredSize();
if (inside && !press && UPimage != null) {
g.drawImage(UPimage,0,0,dim.width,dim.height,null);
}
else if (press) {
g.drawImage(DOWNimage,0,0,dim.width,dim.height,null);
}
else
{
g.drawImage(DISimage,0,0,dim.width,dim.height,null);
}
}
private void jbInit() throws Exception {
ImageIcon upImage = new ImageIcon(upimage);
UPimage = upImage.getImage();
ImageIcon downImage = new ImageIcon(downimage);
DOWNimage = downImage.getImage();
ImageFilter colorfilter = new GrayFilter();
DISimage = createImage( new
FilteredImageSource(UPimage.getSource(),colorfilter));
// this.setBorderPainted(false);
// this.setFocusPainted(false);
this.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
this_mousePressed(e);
}
public void mouseEntered(MouseEvent e) {
this_mouseEntered(e);
}
public void mouseExited(MouseEvent e) {
this_mouseExited(e);
}
public void mouseReleased(MouseEvent e) {
this_mouseReleased(e);
}
});
}
void this_mousePressed(MouseEvent e) {
press=true;
repaint();
}
void this_mouseEntered(MouseEvent e) {
inside = true;
repaint();
}
void this_mouseExited(MouseEvent e) {
inside = false;
repaint();
System.out.println("out");
}
void this_mouseReleased(MouseEvent e) {
press = false;
repaint();
}
public Dimension getPreferredSize() {
return (new Dimension(UPimage.getWidth(this),
UPimage.getHeight(this)));
}
public Dimension getMinimumSize() {
return getPreferredSize();
}
class GrayFilter extends RGBImageFilter {
public GrayFilter() {
// If I set ture, black is gone?!
//canFilterIndexColorModel = true;
}
public int filterRGB(int x, int y, int rgb) {
int r = (rgb & 0xff0000) >> 16;
int g = (rgb & 0x00ff00) >> 8;
int b = (rgb & 0x0000ff);
int iy = (int)(r + g + b)/3;
iy = Math.min(255, iy);
return ((rgb & 0xff000000)
| (iy << 16)
| (iy << 8)
| iy);
}
}
}
Technical Details
Message-ID:
<39800C6D.5F50F4A7@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,3f23a3acd0ddca99,start X-Google-Attributes: gid111d45,public From: sven goetgeluck <sven@officeline.be> Subject: explorer like button in bar Date: 2000/07/27 Message-ID: <39800C6D.5F50F4A7@officeline.be> X-Deja-AN: 651758438 Content-Transfer-Encoding: 7bit X-Accept-Language: en Content-Type: text/plain; charset=us-ascii X-Trace: 28 Jul 2000 03:07:31 -0800, 194.7.164.233 MIME-Version: 1.0 Newsgroups: borland.public.jbuilder.java.swing