introducción a swing · para visualizar un control swing en pantalla, debe ... queremos mostrarlo...
TRANSCRIPT
IntroducciónaSwingTallerdeProgramación [email protected]
• ¿Quédebemosdesarrollar?• ¿Cómoaplicamoslosconocimientosprevios?• ¿Pordóndeempezar?
• Empecemosporentenderelcontextoylaarquitecturadeloquedebemosconstruirenestaprimeraetapa
Introducción
• Desarrollaremosunsistemadistribuido• Cadacomponentetienesupropiaarquitectura
Introducción
• ConocemosloqueeslaArquitecturaenCapas
Introducción
Introducción
• Pensemosenlacalidaddelsoftware•MásprecisamenteenlaUSABILIDAD
Introducción
Introducción
• Relacionémosloconellaboratorio
DiagramadecomponentespropuestoenlaletraparaelServidorCentral
Introducción
• Resumendelcontexto▫ Serequiereunacapadepresentacióngráfica,noporconsoladecomandos▫ Esdecir,elproyectorequiereunatecnología paraconstruirunacapadepresentaciónmásamigable eintuitiva▫ ParacumplircondichorequerimientoseproponeelusodeSwing
Introducción
• TecnologíaJavaparalaconstruccióndeinterfacesdegráficas(GUI)deescritorio• Biblioteca quecontieneunconjuntodecontrolesyelementosgráficos quepermiteninteractuarconlalógicadelaaplicación• javax.swing• javax.swing.events
• Permiteconstruirinterfacescapacesdeserejecutadasendiferentesplataformas
¿QuéesSwing?
• Veamoslasprincipalescaracterísticas:▫ Componentes::quéformapartedelaGUI▫ LayoutManagers::cómoseorganizan▫Modelos::cómosemuestrainformación▫ Eventos::cómoserealizanacciones
¿QuéesSwing?
• Jerarquíadecomponentes▫ ContenedoresdeAltoNivel(top-level containers)� sonlaraízdelajerarquíadecomponentes▫ ContenedoresIntermedios(intermediate containers)� puedentenerotroscontenedoresintermediosy/ocomponentesbásicos
▫ ComponentesBásicos(basic components)� controleselementalesparaentradaysalidadedatosalosusuariosfinalescomobotones,listas,etiquetas,etc.
¿QuéesSwing?::Componentes
¿QuéesSwing?::ComponentesJFrame
JInternalFrame
JButtonJTextField
JLabelJComboBox
JMenuBar
JMenuItem
JMenu
• ContenedoresdeAltoNivel▫ Algunostop-level containers� JFrame:ventanacontítulo,bordeycontenido� JDialog:sub-ventanaindependiente(cuadrodediálogo)
▫ ParavisualizaruncontrolSwingenpantalla,debeperteneceraalgunajerarquíadecontenedores(cuyaraízseráuntop-level container)▫ Cadatop-level container tieneuncontent-pane quecontendrátodosloscomponentesvisibles
¿QuéesSwing?::Componentes
• ContenedoresdeAltoNivel• Opcionalmenteuntop-levelpuedeincluirunabarrademenús(menubar)• Labarrademenúnoestácontenidaenelcontent-pane
¿QuéesSwing?::Componentes
• ContenedoresIntermedios,ejemplos▫ JPanel:contenedordecomponentes▫ JScrollPane:proporcionabarrasdedesplazamientoalrededordeuncomponente▫ JSplitPane:permitealusuariocambiareltamañorelativodedoscomponentes▫ JInternalFrame:ventanadentrodeotraventana
¿QuéesSwing?::Componentes
• ContenedoresBásicos,ejemplos▫ JLabel:etiquetatextual▫ JTextField:campoparaelingresodetexto▫ JComboBox:muestraunalistadeopcionescomouncombodesplegable▫ JButton:botónquepermiteasociarunaacciónaleventodepulsadodelbotón
¿QuéesSwing?::Componentes
• Layout▫ Serefierealesquemadedistribucióndeloselementosdentrodeundiseño
• LayoutManager▫ EsunobjetoqueimplementalainterfazLayoutManagerydeterminaeltamañoyposicióndeloscomponentesdentrodeuncontenedor▫ Realizaellayout(tamañoyubicación)automáticodeloselementosqueseagreganalcontenedoralcualellayoutmanagercontrola
¿QuéesSwing?::Layouts
• Layout Manager▫ Existenmúltiplesformaspreexistentesdelayoutmanagersasícomolaposibilidaddenoutilizarningúnlayout manager(llamadoAbsolute Layout).▫ Tambiénsepuedencrearlayout managerspersonalizados(pococomúnydesaconsejable)▫ Losmássencillosson:BorderLayout,FlowLayout,BoxLayout yGridLayout
¿QuéesSwing?::Layouts
BorderLayout
Utilizacincozonasparacolocarcomponentes
FlowLayout
Acomodaloscomponentesdeizquierdaaderecha
BoxLayout
Componentesdeformahorizontalyvertical(X,Y)
GridLayout
Acomodacomponentesenformadematriz
¿QuéesSwing?::Layouts
• UsodeModelos (pequeñavisión)▫ Casilatotalidaddeloscomponentesposeenunmodelo(Model),aunquetípicamenteelprogramadornonecesitesaberdeél▫ Losmodelosmásútilessoncoleccionesdeelementosqueseránmostradosporcomponentes▫ Porejemplo,sitenemosunalistadeelementos,yqueremosmostrarloenuncontrolJList,debemostrabajarsobreelmodelodelalista(conlacolección),paraqueestaseveabienenpantalla
¿QuéesSwing?::Modelos
• UnusonecesariodelosmodelosesparamanipularlainformacióndeunaJTable
¿QuéesSwing?::Modelos
•Manejodeeventos▫ UneventoocurrecadavezqueelusuariointeractúaconcomponentesdelaGUI▫ Todocomponentetieneunaseriedeeventosquese“disparan”,alosquepodemosespecificarlesuncódigoqueseejecutarácuandoestoocurra▫ Similaralmanejodeexcepciones,perouneventonomanejadonoprovocaunerrorenelprograma
¿QuéesSwing?¿QuéesSwing?::Eventos
• Alpresionarelbotón“Registrar”,secapturaelevento“click”yseejecutaelcódigodefinido• Enestecasosetomanlosdatosdelainterfazgráfica:nombre,apellidoyC.I.• Luegosellamaaunainterfazdecasodeuso,queregistraunUsuarioenelSistema
¿QuéesSwing?::Eventos
• ¿CómodesarrollarenSwing?▫ Hacerlomediantecódigopuro▫ UtilizarcomoayudaeldiseñadorincorporadoenlosIDE,elcualgeneracódigoparafacilitarelprocesodediseñoGUI.
Recomendacionesprácticas
Diseñador
MedianteDragandDrop(arrastrarysoltar),elusuarioProgramadordiseñalainterfaz
Luegoseagregaelcódigopertinenteparatrabajarconlalógica(eventos,etc.)
Recomendacionesprácticas
• SehacreadounsoftwarequepermiteelregistroybúsquedadeUsuarios• Sistemaencapas• Lógica:siguiendobuenasprácticascondatatypes yexcepcionesespecíficasparacomunicarseconlapresentación• Presentación:cadaventanaenunaclaseseparadapara facilitareldiseño
Demo
Demo
TheSwingTutorial(Oracle)http://download.oracle.com/javase/tutorial/uiswing/index.html
TheDefinitiveGuidetoJavaSwing(J.Zukowski)http://link.springer.com/book/10.1007/978-1-4302-0033-8
PiensaenJava(B.Eckel)http://www.univo.edu.mx/computo/maestria/Pensando%20En%20Java.pdf
WindowBuilderUserGuidehttp://help.eclipse.org/oxygen/index.jsp
Referencias