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)
codice:
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:
codice:
esempio e;//chiama blocco static e quindi setta laf
e = new esempio()//chiama costruttore