Mi piacerebbe se ci fosse qualche progetto sviluppato in Java per imparare le migliori pratiche di Swing. Intendo un progetto open source ospitato su Internet tramite SVN o simili. Ho letto alcune domande in Stackoverflow su questo argomento ma vedrei alcuni progetti. Grazie.Un buon progetto Swing per l'apprendimento delle migliori pratiche
risposta
Il modo in cui appresi le best practice di Swing era la lettura del codice sorgente Swing nel JDK e la pratica. Segui le pratiche di Sun e sarai sulla strada giusta.
Leggere le implementazioni di JTable, JTree, JScrollPane, i vari LookAndFeels, SwingWorker, SwingUtilities. La gestione degli eventi e gli schemi MVC sono estremamente complessi ma molto leggibili, mantenibili ed estensibili. Essenzialmente, ogni volta che usi un componente, leggi il codice sorgente e capisci cosa e perché lo fanno. Alla fine, inizierai a fare la stessa cosa.
E, soprattutto, codice. Scrivi alcuni programmi di grandi dimensioni e inizierai a vedere cose che non sembrano giuste o ottimali. Vieni a Stack e scopri cosa stai facendo di sbagliato o potresti fare di meglio. Scrivi qualcos'altro e fai lo stesso.
Detto questo, i seguenti progetti sono (o probabilmente) buon codice:
SwingX - I manutentori di SwingX erano Sun/ex-Sun persone, e ho sempre pensato a come incubatore non ufficiale per il futuro Funzionalità swing.
Squirrel (Un client JDBC) - Non ho effettivamente guardato la loro fonte, ma ho usato il programma per anni e non mostra nessuno dei difetti comuni nei programmi Swing scritti male. Con quanto è potente e quanto bene funziona, metterei dei soldi che è estremamente ben scritto.
InfoNode (Un potente framework di docking) - Ho utilizzato un bel po 'del loro codice, ed è piuttosto solido.
JFreeChart (Una potente libreria di grafici) - Non è il codice più grande, ma molto meglio della media, soprattutto tenendo conto di un vecchio progetto che non è mai stato concepito per fare tutto ciò per cui le persone lo usano. Detto questo, è molto estendibile e non ho mai avuto problemi a modellarlo secondo i miei bisogni (che sono molto, molto più delle sue intenzioni originali).
GlazedLists (Una libreria di elenchi basata su eventi altamente performante) - Non esattamente Swing, ma la gestione degli eventi è simile a Swing. Hanno anche implementazioni di modelli Swing e alcuni componenti personalizzati che sono estremamente veloci.
JIDE Common Layer: una vasta collezione di componenti personalizzati che funge da base per i componenti commerciali. Non ho esaminato il loro codice, ma i loro componenti sono belli, e dato che il loro obiettivo principale sono i componenti commerciali di Swing, ancora una volta, metterei i soldi che il loro codice è solido.
Ho trovato molto interessante vedere un'applicazione di qualità professionale scritta in Swing, ad esempio IntelliJ IDEA Community Edition
. Ora che è open source, puoi controllare il codice e iniziare a scavare. Attenzione, non ci sono commenti!