setEnable nachbilden

Status
Nicht offen für weitere Antworten.

Titanpharao

Bekanntes Mitglied
Hallo ich habe einen RoundButton. bei dem wird in paint das Image gezeichnet, nun würde ich gern über setEnable(false) ihn so "ausgrauen". Das geht aber nicht, da er ja rund ist. Aber wie könnte ich das Graühics Objekt "ausgrauen" wie es bei setEnable(false) gemacht wird?
Heir mal der Code soweit ... danke :)

Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;

import javax.swing.JButton;

public class RoundButton extends JButton {

  BufferedImage img;
  
  public RoundButton(BufferedImage image, int x,int y,int w,int h) {
      this.img=image;
      this.setBounds(x, y, w, h);
  }
  
  public void paint(Graphics g) {
	  if(isEnabled()){
		  if(img!=null){
			  g.drawImage(img,0,0,this);
		  }
	  }
	  else{
		  g.drawImage(img,0,0,this);
	  }
  }

   public boolean contains(int x, int y) {
       int mx = getSize().width/2;
       int my = getSize().height/2;
       return (((mx-x)*(mx-x) + (my-y)*(my-y)) <= mx*mx);
   }
}
 

Landei

Top Contributor
Das Image selber kann als "Maske" dienen, und zwar so, dass nur die Transparenz-Information, aber nicht die Farben verwendet werden. Du musst einen Alpha-Wert für das Graphics-Objekt setzen und dann die Maske mit dem richtigen Modus (ich glaube, es war SRC_OVER) "drüberzeichnen". Hier ein Demo:
http://www.filthyrichclients.org/ -> Examples -> Chapter 6
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben