Salve a tutti!
Mi trovo alle prese con la programmazione di interfacce grafiche in Java.
Vorrei capire l'essenza dalla classe Toolkit, dato che dalle API non riesco ad intuirlo.
Grazie!
Salve a tutti!
Mi trovo alle prese con la programmazione di interfacce grafiche in Java.
Vorrei capire l'essenza dalla classe Toolkit, dato che dalle API non riesco ad intuirlo.
Grazie!
La classe Toolkit rappresenta il toolkit grafico a disposizione: ti permette di avere informazioni sulla risoluzione del monitor, i colori di sistema, ti permette di "aprire" file di immagini (GIF, JPG, PNG) e ti fornisce tutta una serie di utility per manipolare queste informazioni.
Alcuni di questi metodi non possono essere chiamati direttamente, perchè essi prendono le informazioni interrogando direttamente il S.O., quindi può capitare che alcuni dei metodi non siano supportati dal S.O. in uso.
Ti faccio degli esempi delle cose che si possono fare usando questa classe:
E' una classe molto utile se si vuole "interfacciarsi" con il S.O. in uso...codice:Toolkit mioToolkit = Toolkit.getDefaultToolkit(); // ottengo il toolkit in uso Dimension risoluzione = mioToolkit.getScreenSize(); // ottengo la risoluzione del monitor (del dekstop, in pratica) Image immagine = mioToolkit.createImage("immagine.gif"); // creo un oggetto di tipo Image che posso visualizzare dal file immagine.gif Cursor puntatore = mioToolkit.createCustomCursor(immagine, new Point(0,0), "miocursore"); // creo un puntatore del mouse personalizzato da usare nella mia appilcazione
Ciao.
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
la domanda era legata essenzialmente alla ridefinizione del metodo:
public void setVisible(boolean value)
avevo tale codice che mi risultava oscuro:
Dimension dim_schermo = Toolkit.getDefaultToolkit().getScreenSize();
quindi il riferimento dim_schermo è portatore di informazioni riguardanti lo schermo???
Grazie ancora!
salve!
Ancora!
date uno sguardo a questo frammento di codice:
public void setVisible(boolean visible) {
Dimension dim_schermo = Toolkit.getDefaultToolkit().getScreenSize();
int pos_x = (dim_schermo.width - getSize().width) / 2;
int pos_y = (dim_schermo.height - getSize().height) / 2;
setLocation(pos_x, pos_y);
super.setVisible(visible);
}
sapete spiegarmi lo scopo dell'ultima riga "super.setVisible(visible);"
Ho provato ad eliminarla per notare le differenze, ma non c'è nulla che cambia???
Ciao.
In pratica questo metodo tu lo avrai in qualche classe che estende Frame e cioè:
//vari import
.
.
.
public class MiaFinestra extends Frame{
.
.
.
.
public void setVisible(boolean visible) {
Dimension dim_schermo = Toolkit.getDefaultToolkit().getScreenSize();
int pos_x = (dim_schermo.width - getSize().width) / 2;
int pos_y = (dim_schermo.height - getSize().height) / 2;
setLocation(pos_x, pos_y);
super.setVisible(visible);
}
}
Non hai fatto altro che sovrascrivere ( overriding ) il metodo setVisible( boolean vis ) della super classe Frame e dopo aver fatto le tue operazioni e cioè
Dimension dim_schermo = Toolkit.getDefaultToolkit().getScreenSize();
int pos_x = (dim_schermo.width - getSize().width) / 2;
int pos_y = (dim_schermo.height - getSize().height) / 2;
setLocation(pos_x, pos_y);
Ti richiami il metodo della superclasse Frame setVisible e cioè:
super.setVisible(visible); in maniera tale tu abbia una tua versione personalizzata del meto setVisible di Frame ma che dopo diverse operazioni faccia alla fine la stessa cosa del metodo della super classe; cioè o fa vedere oppure non fa vedere la finestra.
Spero di essere stato abbastanza chiaro. Ciao
Se vuoi trovare l'arcobaleno, devi sopportare la pioggia
Esattamente... in più, quel metodo, centra la tua finestra nello schermo:
Ciao.codice://ricevo la dimesione dello schermo Dimension dim_schermo = Toolkit.getDefaultToolkit().getScreenSize(); // centro orizzontalmente la finestra int pos_x = (dim_schermo.width - getSize().width) / 2; // centro verticalmente la finestra int pos_y = (dim_schermo.height - getSize().height) / 2; // la posiziono nelle nuove coordinate calcolate setLocation(pos_x, pos_y);
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Vi ringrazio, mi avete risolto un bel po' di casini