Introducción a Swing · Para visualizar un control Swing en pantalla, debe ... queremos mostrarlo...

Post on 22-Feb-2019

216 views 0 download

Transcript of Introducción a Swing · Para visualizar un control Swing en pantalla, debe ... queremos mostrarlo...

IntroducciónaSwingTallerdeProgramación 2017tprog@fing.edu.uy

• ¿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