Perché Swing non appare nativo fuori dalla scatola?

3

Le GUI di Java Swing non sono native per impostazione predefinita (tranne che per Mac OS X per qualche motivo). Swing usa il proprio look and feel. Puoi utilizzare Swing per utilizzare l'aspetto del sistema inserendo:

javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());

all'inizio del tuo metodo main , ma: Perché questo non è fatto per impostazione predefinita?

    
posta Jop V. 14.06.2013 - 20:32
fonte

3 risposte

3

La "filosofia" del linguaggio Java è WORA :

Java is ...intended to let application developers "write once, run anywhere" (WORA), meaning that code that runs on one platform does not need to be recompiled to run on another.

Spiegazione per impostazione predefinita nel tutorial di Swing ( Aspetti disponibili ) sembra coerente con sopra:

CrossPlatformLookAndFeel — this is the "Java L&F" (also called "Metal") that looks the same on all platforms. It is part of the Java API (javax.swing.plaf.metal) and is the default...

A quanto pare, i progettisti di librerie hanno deciso che " CrossPlatform ... sembra uguale su tutte le piattaforme" merita di essere l'impostazione predefinita per la libreria nella lingua principalmente intesa come multipiattaforma.

I sogni di marketing / designer potrebbero svolgere il loro ruolo anche qui. Ogni progettista di biblioteche spera / si aspetta che sia popolare e ampiamente utilizzato (altrimenti, non ha molto senso investire gli sforzi in esso). Se i progettisti di Swing si aspettavano che venisse utilizzato in modo molto ampio, L & F potrebbe essere considerato un vantaggio, in modo che gli utenti che eseguono lo stesso ( popolare ! Come potrebbe essere diverso?) Swing l'applicazione su piattaforme diverse si sentirà a proprio agio con un'interfaccia familiare.

    
risposta data 14.06.2013 - 22:53
fonte
2

Ho fatto un sacco di programmi Swing alla fine degli anni '90, ma oggigiorno non faccio molto, quindi non so se è ancora un problema o meno. In passato, se si utilizzava un aspetto nativo, occasionalmente si verificavano problemi di layout durante l'esecuzione su un'altra piattaforma, a causa di proporzioni di controllo leggermente diverse e simili. L'utilizzo dell'aspetto metallico predefinito evita questo tipo di problemi.

Ovviamente c'è sempre la possibilità più puerile che Java apprezzi il loro aspetto e si senta meglio ed è la loro lingua, quindi lì: P

    
risposta data 14.06.2013 - 21:52
fonte
0

Sono abbastanza sicuro che lo swing sia stato progettato per essere leggero con i propri widget Java (Sun, ora Oracle) progettati per l'usabilità multipiattaforma. La grafica per i widget ha lo stesso aspetto e viene distribuita insieme al pacchetto della piattaforma. L'aspetto nativo richiede un'interfacciamento con l'aspetto del sistema operativo, che lo rende più pesante. Altri toolkit della GUI lo fanno in modo nativo, come AWT.

    
risposta data 14.06.2013 - 20:40
fonte

Leggi altre domande sui tag