Salve a tutti. A qualcuno di voi è mai servito creare finestre in Java leggermente trasparenti? O magari di forme diverse dal rettangolare? Magari no ma in futuro potrebbe capitarvi così come è capitato a me. Quindi voglio fare questa breve guida all'utilizzo di una classe: AWTUtilities!!

È proprio questa la classe che ci permette di creare simpatiche finestre non rettangolari o semitrasparenti. Vediamo come.

Premetto che queste funzionalità sono state aggiunte solamente dalla JDK 1.6.10

 

Finestre Trasparenti

Per creare una finestra trasparente abbiamo prima di tutto bisogno di una finestra. Una volta creato il nostro JFrame dovremo settare il grado di trasparenza. Tutto questo però solo se il sistema permette finestre traslucide. Vediamo un po di codice.

 

JFrame frame=new JFrame("Frame traslucido");
boolean possibile=AWTUtilities.isTranslucencySupported(AWTUtilities.Translucency.TRANSLUCENT);
if(possibile){
AwtUtilities.setWindowOpacity(frame,(float) 0.8);
}

Ed abbiamo creato la nostra finestra traslocida. Ora vediamo come crearne una ovale:

Finestre ovali

Per una finestra ovale (o di altre forme) dobbiamo invece utilizzare il metodo setWindowShape che prende in input un frame ed uno Shape.

N.B. Il metodo setShape funziona solo su Frame undecorated,da ora in poi ci riferiremo a JUndecorated come una istanza di JFrame con undecorated settata a true.

Una volta che avremo il nostro frame undecorated andremo a creare il nostro oggetto Shape.

 

JUndecorated und= new JUndecorated();
Shape forma = new Ellipse2D.Double(0, 0, und.getWidth(), und.getHeight());
AWTUtilities.setWindowShape(und, forma);
und.setVisibile(true);

Al posto dell'ellisse potremo inserire una qualsiasi forma, persino un poligono creato da noi.

 

Questo è quanto, mi auguro di esservi stato utile. A presto ;)