PDA

Visualizza la versione completa : [java]LookAndFeel


maurizio2
07-04-2005, 11:06
Come faccio ad ottenere il nome della piattaforma su cui gira un applicazione java??
Ciao :ciauz:

dekdek
07-04-2005, 11:09
Con:



UIManager.getLookAndFeel();


ottieni un oggetto di tipo LookAndFeel. Il metodo getName, ti da' il nome del L&F.

maurizio2
07-04-2005, 11:14
UIManager.LookAndFeelInfo looks[] = UIManager.getInstalledLookAndFeels();
try{
UIManager.setLookAndFeel(looks[2].getClassName());
SwingUtilities.updateComponentTreeUI(this);
}catch(Exception e){
e.printStackTrace();
}

Sono pienamente d'accordo, ma come faccio ad impostare il LookAndFeel in base alla piattaforma in cui gira?
Con l'istruzione sopra sono io a dire di applicare il look[2]
corrispondente a windovs ma se si trovasse a girare su unix credo che gli verrebbe da vomitare.... :fighet:

Pablob
07-04-2005, 11:19
devi recuperare la System.property che cerchi; forse la pių adeguata č os.name:




System.getProperty("os.name");


Qui trovi l'elenco:
http://java.sun.com/docs/books/tutorial/essential/system/properties.html

LeleFT
07-04-2005, 11:22
Fai cosė:


public static void main(String [] args) {
try {
UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );
} catch (Exception e) { e.printStackTrace(); }
... // Avvia la tua applicazione
}

Ciao. :ciauz:

maurizio2
07-04-2005, 11:38
Ok adesso funziona!!!!

maurizio2
07-04-2005, 11:39
Ah ciao Lele!! non avevo visto che eri tu!!

maurizio2
07-04-2005, 11:45
Funziona anche con System.getProperty("os.name");
e con una condizione if imposto il LookAnd Feel
ma credo che sia meglio usare


UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );

perche' cosi' e' indipendente dai nomi da utilizzare nel sorgente
e' ottieni in maniera piu' efficiente il LookAndfeel appropriato.
Ciao
:ciauz:

maurizio2
07-04-2005, 12:23
Pero' c'e' una cosa da dire anche se imposto volontariamente il LookAndFeel cio' che e' la barra del titolo rimane invariata e visualizzata in base al os corrente.
Ho trovato che si puo' modificare la barra del titolo con:


MyApp app = null;
app.setDefaultLookAndFeelDecorated(True/*o false*/);
app = new myApp();

Ma cosi ottengo il LookAndFeel del' os corrente o quello di default di java.
Da notare che tale metodo va applicato all'handle prima che venga istanziato altrimenti non funziona.
O forse bisogna applicare

SwingUtilities.updateComponentTreeUI(app);
anche se viene prima istanziato??
Ora provo....

maurizio2
07-04-2005, 12:32
Niente da fare devo applicare il metodo prima di istanziare la mia classe!

Loading