import java.awt.*;import java.awt.event.*;public class forschung { public static void main(String[] args){ Fenster wnd = new Fenster(new Dimension(640,480)); // Instanzierung eines Objekts aus der Klasse Fenster im Format [640,480]... wnd.setVisible(true); // Fenster sichbar machen, nachdem das Fenster konstruiert und die paint() Methode ausgeführt wurde... }}class Fensterextends Frame{ // Ableitung aus java.awt.frame public Fenster(Dimension size){ this.setSize(size.width,size.height); this.setBackground(Color.lightGray); this.setLayout(null); this.add(new eigenesDialogElement(new Rectangle(50,50,100,100))); } public void paint(Graphics g){ // Hintergrund Zeichnen... int posLeft = this.getInsets().left; // Linke StartPosition der Kachelung int posRight = this.getWidth() - this.getInsets().right; // Letzte Kachel horizontal int posTop = this.getInsets().top; // Obere Startposition der Kachelung int posBottom = this.getHeight() - this.getInsets().bottom; // Letzte Kachel vertikal int size = 20; // Grösse der einzelnen Kacheln for(int i = posTop;i < posBottom;i += size){ for(int r = posLeft; r < posRight; r+=size){ g.drawRect(r,posTop,size,size); } posTop += size; } }}class eigenesDialogElement // Eigenes Dialogelement aus einem Recheck bestehend, leuchtet auf, wenn man mit der Maus darüberfährt...extends Canvasimplements Runnable{ private int width, height; private Color delta,rect; // Farben des Dreieck Polygons und dem darübergelegten Rechteck... private int alpha; // AlphaWert private boolean EEflag; // Entered / Exited flag ( Mouse ); private Thread th; public eigenesDialogElement(Rectangle Properties){ this.setBounds(Properties); this.setBackground(new Color(255,255,255,0)); // Hier ist das Problem, dieser Alphawert hat keine Auswirkung auf das Programm... this.width = Properties.width; this.height = Properties.height; this.enableEvents(AWTEvent.MOUSE_EVENT_MASK); // Mouse Events aktivieren this.delta = new Color(255,0,0); this.rect = new Color(0,0,255); this.alpha = 255; } public void paint(Graphics g){ // Graphische Darstellung des Dialogelements int[] x = {5,45,90}; int[] y = {90,5,90}; g.setColor(this.delta); g.fillPolygon(new Polygon(x,y,3)); g.setColor(this.rect); g.fillOval(5,5,this.width-10,this.height-10); } public void processMouseEvent(MouseEvent event){ // Thread starten if(event.getID() == event.MOUSE_ENTERED){ this.th = new Thread(this); this.EEflag = true; this.th.start(); } else if(event.getID() == event.MOUSE_EXITED){ // Das Entered Flag auf false setzen, damit der Thread beginnt, rückwärts zu zählen und sich bei 0 selbst zerstört... this.EEflag = false; } } public void run(){ while(!Thread.interrupted()){ try{ this.th.sleep(20); // Timer setzen } catch(InterruptedException e){ this.th.interrupt(); } if(this.EEflag && this.alpha > 0){ this.rect = new Color(0,0,255,this.alpha-=1); // Transparenz erhöhen } else{ if(this.alpha < 255 ){ this.rect = new Color(0,0,255,this.alpha+=1); // Transparenz ernidrigen } else{ this.th.interrupt(); // Thread zerstören, wenn Transparenz bei 255, also völlig undurchsichtig } } this.repaint(); } }}