PDA

Visualizza la versione completa : [java]LookAndFeel non funge


Dorcan82
16-12-2004, 15:28
Salve....
tentavo di settare il LookAndFeel della mia applicazione con quello window, ma non funziona....appare sempre quello di default.

ecco cosa scrivo:
public OmsWindowToolBarMain() {
try{
javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows");
}catch(Exception genEx){System.out.println(genEx.getMessage());}
initComponents();

}

initComponent setta tutta la gui

netarrow
16-12-2004, 16:22
inserisci il codice per settare il look and feel nel blocco static della classe frame



...
class finestra extends JFrame {

static {

try {
UIManager.setLookAndFeel("com.blablabla");
} catch(Exception e) {

}

}

}
...


:ciauz:

Dorcan82
16-12-2004, 16:47
non capisco cosa vuoi dire...non ho metodi statici

netarrow
16-12-2004, 17:09
ogni classe, ha un campo static, nel campo static vengono eseguite le istruzioni prima dell'allocazione con new e quindi prima che l'oggetto venga costruito.
Nel tuo caso, la finestra sapr da prima della chiamata al costruttore che il laf sar quello di windows, in modo da disegnare da 0 i componenti, ecco un altro esempio che usa il look and feel del sistema in uso:

ah attento che il nome del package contenente il laf era errato, potrebbe essere stato anche quello(infatti se il laf non installato viene usto quello di default Metal)



public class esempio extends JFrame {
//inizio blocco static
static {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch(Exeption e) {
}
}
//fine blocco static

esempio() {
JOptionPane.showMessage(this, "Ciao", "Ciao");
}

public static void main(String args[]) {
new esempio();
}
}


Nel blocco static le operazioni vengono chiamate come prima cosa, se ad esempio la classe avrebbe avuto anche una dichiarazione questo l'ordine:



esempio e;//chiama blocco static e quindi setta laf
e = new esempio()//chiama costruttore


:ciauz:

LeleFT
16-12-2004, 17:10
Non hai metodi statici... questo mi suona strano, nemmeno il metodo main per avviare l'applicazione? Inseriscilo l dentro. non serve inserirlo in un blocco static, sufficiente inserirlo nel main() prima di avviare la finestra.


Ciao. :ciauz:

netarrow
16-12-2004, 17:14
Originariamente inviato da LeleFT
Non hai metodi statici... questo mi suona strano, nemmeno il metodo main per avviare l'applicazione? Inseriscilo l dentro. non serve inserirlo in un blocco static, sufficiente inserirlo nel main() prima di avviare la finestra.


Ciao. :ciauz:

anche nel main si, l'importante che venga settato staticamente prima del costruttore, io solitamente metto nel blocco static, ma x abitudine.
Se si vuole si pu anche settarlo dinamicamente, ma poi bisogna aggiornare tutti i componenti, un esempio che usa i laf dinamicamente valido il swingset2 presente del jdk che permette di settare i look and feel dall'utente ed aggiornarlo subito.

:ciauz:

Loading