MokaByte
Numero 09 - Giugno 1997
|
|||
Maurizio Boscaini |
|
||
Delle nuove classi
presenti nel package java.awt analizzeremo ora la classe SystemColor
La classe SystemColor
estende la classe Color per rappresentare i colori di sistema della GUI,
su piattaforme come Windows95, Solaris/CDE, che forniscono uno schema dei
colori del desktop. SystemColor è una classe final, che non può,
cioè, essere ulteriormente estesa. Essa ridefinisce i metodi getRGB()
e l’onnipresente toString(), ed aggiunge numerori campi final static (costanti
di classe), per rappresentare appunto i colori degli oggetti della GUI.
Tra questi oggetti troveremo, così, il colore di sfondo del desktop,
lo sfondo dei menu, il colore del bordo delle finestre, etc... Questi colori
simbolici sono creati automaticamente memorizzati in java.awt.SystemColor.
Riporto di seguito l’elenco completo dei 26 colori di sistema, presente
nella documentazione: desktop
Background color of desktop activeCaption
Background color for captions activeCaptionText
Text color for captions activeCaptionBorder
Border color for caption text inactiveCaption
Background color for inactive captions inactiveCaptionText
Text color for inactive captions inactiveCaptionBorder
Border color for inactive captions window
Background for windows windowBorder
Color of window border frame windowText
Text color inside windows menu
Background for menus menuText
Text color for menus text
background color for text textText
text color for text textHighlight
background color for highlighted text textHighlightText
text color for highlighted text control
Background color for controls controlText
Text color for controls controlLtHighlight
Light highlight color for controls controlHighlight
Highlight color for controls controlShadow
Shadow color for controls controlDkShadow
Dark shadow color for controls inactiveControlText
Text color for inactive controls scrollbar
Background color for scrollbars info
Background color for spot-help text infoText
Text color for spot-help text
Utilizzando questi colori è possibile costruire nuovi oggetti grafici, che mantengano la consistenza visuale con l’ambiente grafico di sistema. Non tutte le piattaforme supportano colori distinti per ciascun nome simbolico. Nel caso un colore simbolico non sia supportato, esso viene mappato nel colore più appropriato di default. Con alcuni sistemi, che supportano l’aggiornamento dinamico dei colori di sistema, è possibile cambiare un colore di sistema e vederne la variazione "on the fly". Altre piattaforme, come Windows95, invece tale variazione è possibile vederla solo al successivo lancio del programma java, che ne fa utilizzo, poiché i colori di sistema sono inizializzati ed aggiornati al caricamento del toolkit.Dopo averlo compilato (con il JDK1.1), per lanciarlo è sufficiente usare l’appletviewer con il seguente file ShowSystemColor.html:
import java.awt.*; import java.applet.*; public class ShowSystemColor extends Applet { ü * init() */ public void init() { int numOfColor = 26; setLayout(new GridLayout(numOfColor,3)); showColor(SystemColor.desktop, "desktop"); showColor(SystemColor.activeCaption, "activeCaption"); showColor(SystemColor.activeCaptionText, "activeCaptionText"); showColor(SystemColor.activeCaptionBorder, "activeCaptionBorder"); showColor(SystemColor.inactiveCaption, "inactiveCaption"); showColor(SystemColor.inactiveCaption, "Þ inactiveCaptionText"); showColor(SystemColor.inactiveCaption, "inactiveCaptionBorder"); showColor(SystemColor.window, "window"); showColor(SystemColor.windowBorder, "windowBorder"); showColor(SystemColor.windowText, "windowText"); showColor(SystemColor.menu, "menu"); showColor(SystemColor.menuText, "menuText"); showColor(SystemColor.text, "text"); showColor(SystemColor.textText, "textText"); showColor(SystemColor.textHighlight, "textHighlight"); showColor(SystemColor.textHighlightText, "textHighlightText"); showColor(SystemColor.textInactiveText, " textInactiveText"); showColor(SystemColor.control, "control"); showColor(SystemColor.controlText, "controlText"); showColor(SystemColor.controlHighlight, "controlHighlight"); showColor(SystemColor.controlLtHighlight, "controlLtHighlight"); showColor(SystemColor.controlShadow, " controlShadow"); showColor(SystemColor.controlDkShadow, "controlDkShadow"); showColor(SystemColor.scrollbar, "scrollbar"); showColor(SystemColor.info, "info"); showColor(SystemColor.infoText, "infoText"); setSize(440,540); } // END init() ü * showColor() */ public void showColor(Color color, String str) { TextArea ta = new TextArea(str,1,16,TextArea.SCROLLBARS_NONE); Label l = new Label(str); Button b = new Button(color.toString()); ta.setBackground(color); ta.setForeground(new Color(~(color.getRGB()))); add(ta); l.setBackground(color); l.setForeground(new Color(~(color.getRGB()))); add(l); b.setBackground(color); b.setForeground(new Color(~(color.getRGB()))); add(b); }// END showColor() }// END class ShowSystemColor
<HTML> <HEAD> <TITLE> Mostra i colori di sistema </TITLE> <HEAD> <BODY> <APPLET CODE="ShowSystemColor.class" WIDTH=440 HEIGHT=580> </APPLET > </BODY> </HTML>
Il risultato su una piattaforma Windows95 è il seguente:
L’applet visualizza
i colori variando lo sfondo di tre Component: TextArea, Label e Button,
attraverso la funzione showColor() alla quale vengono passati il colore
di sfondo per i vari component e il loro nome o il loro indice nello schema
dei colori di sistema, che viene visualizzato nel colore complementare,
in senso logico, del colore dello sfondo. Questo ci permette di osservare
la possibilità, introdotta dall’1.1, di cambiare il colore di fondo
di un
Button. Inoltre,
si nota come il JDK, almeno la versione per Windows95, presenti un bug
per quanto riguarda i colori di sistema dei TextArea, che non riflettono
quelli reali (speriamo che la cosa venga messa a posto presto). Lo stesso
problema si presenta con un altro TextComponent quale il TextField. Fatemi
sapere se sulle altre piattaforme si presenta lo stesso problema.
Maurizio Boscaini è laureato in Ingegneria Elettronica presso l'Università di Padova, dove ha discusso la tesi "Visita virtuale al Museo di Storia Naturale". Lavora come tecnico all'Università di Verona, collabora allo sviluppo di applicazioni in Java presso Netsy di Caldogno (VI) e si interessa di HTML, Java, JavaScript, Visual Basic, C/C++. Scrive, inoltre, articoli sui temi della solidarietà e della pace per il settimanale Verona Fedele e il quotidiano l'Arena. |
|
||
|
||
MokaByte ricerca
nuovi collaboratori
|
||
|