Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Java.awt.Toolkit

  1. #1

    Java.awt.Toolkit

    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!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    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:
    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
    E' una classe molto utile se si vuole "interfacciarsi" con il S.O. in uso...


    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

  3. #3

    Grazie

    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!

  4. #4
    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???

  5. #5
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    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

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Esattamente... in più, quel metodo, centra la tua finestra nello schermo:
    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);
    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

  7. #7

    GRAZIE!!

    Vi ringrazio, mi avete risolto un bel po' di casini

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.