Activitats
Estructura d'objectes d'una GUI
L’objectiu d’aquesta activitat és estudiar quina és l’estructura que conformen els objectes associats a una interfície gràfica, a partir de la identificació dels diferents contenidors, controls i layouts existents i les relacions entre ells.
Genereu l’estructura que conformen tots els objectes associats a la interfície gràfica següent:
Barra de menús
L’objectiu d’aquesta activitat és generar una barra de menús completa per a una aplicació gràfica.
Trieu una aplicació qualsevol típica d’escriptori, com pot ser un editor de text, un full de càlcul, un navegador web… Genereu manualment el codi Java per representar una finestra amb una barra de menús completa (amb cadascun dels seus menús i submenús) exactament igual. Això implica la inclusió d’icones davant algunes opcions de menú, o representar-ne l’estat per defecte (habilitat/deshabilitat).
Interfícies complexes amb un IDE
L’objectiu d’aquesta activitat és aprendre a generar interfícies complexes mitjançant el vostre entorn integrat d’edició de programes.
Trieu una aplicació qualsevol típica d’escriptori, amb una interfície no gaire complexa, com pot ser un editor de textos, un editor d’imatges, un reproductor d’àudio… Genereu una interfície semblant mitjançant el vostre IDE. La interfície generada no cal que respongui a les ordres de l’usuari; simplement ha de tenir un aspecte semblant a l’aplicació triada.
Modificació de propietats
L’objectiu d’aquesta activitat és entendre quins són els mètodes existents en les diferents classes del Java Swing per modificar l’aspecte o el comportament dels diversos components.
Indiqueu quin és el codi Java que cal usar per assolir les fites següents:
- Establir a vermell el color del text i a blanc el fons d’un
JLabel
. - Incloure una imatge des d’un fitxer, en lloc de text, dins un
JButton
. - Habilitar o deshabilitar un
JMenuItem
. - Seleccionar o deseleccionar un
JRadioButton
. - Generar un conjunt de tres
JRadioButton
de manera que en un moment determinat només un pugui estar seleccionat. Quan se’n selecciona un, els altres automàticament deixen d’estar seleccionats. - Obtenir el text d’una
JTextArea
.
GridBagLayout
L’objectiu d’aquesta activitat és entendre com funciona el GridBagLayout
, un dels layouts més complexos dins la biblioteca Swing.
Genereu manualment, sense usar l’editor gràfic del vostre IDE, el codi que mostraria la interfície gràfica següent. Per fer-ho, utilitzeu únicament el GridBagLayout
.
Control del display
L’objectiu d’aquest exercici és generar una interfície gràfica senzilla que permeti veure com es registren els Listeners per executar un fragment de codi concret davant les accions de l’usuari. Addicionalment, es treballa amb la classe JColorChooser
.
Creeu una aplicació en què es mostri en la zona superior de la pantalla una zona clarament diferenciada, inicialment buida (de manera semblant a la pantalla de “display” d’una calculadora). D’aquesta zona, l’usuari ha de poder controlar, com a mínim, el següent:
- Triar quin text es visualitza. El text s’ha d’anar actualitzant en temps real, a mesura que es va escrivint sobre el control escollit per fer-ho.
- Triar el color del text que es mostra. Si el color triat és el que ja hi havia en aquell moment, ha de sorgir un tauler de diàleg que avisi d’aquest fet i fer que l’usuari en triï un de diferent.
- Generar text a l’atzar (una cadena de text de deu caràcters).
- Esborrar totalment el text.
La tria dels diferents controls a usar per efectuar cada acció i la seva ubicació són totalment lliures. L’única restricció que s’imposa és que en la tria del color de la casella ha d’estar implicada la classe JColorChooser
.
Esdeveniments del ratolí
L’objectiu d’aquest exercici és veure quina mena d’esdeveniments pot generar el ratolí sobre una interfície gràfica.
Genereu una interfície gràfica senzilla composta per un panell blanc que ocupi pràcticament tota la finestra principal. Sota aquest tauler, ubiqueu un seguit d’etiquetes (JLabel
) amb el comportament següent quan el ratolí es troba sobre el panell blanc:
- La primera de totes mostra en tot moment quines són les coordenades del punter del ratolí sobre el tauler. Els valors s’actualitzen en temps real a mesura que el punter es mou.
- La segona canvia a color verd quan es pitja el botó esquerre, i es torna gris quan es deixa de prémer.
- La tercera canvia a color vermell quan es pitja el botó dret, i es torna gris quan es deixa de prémer.
- Si es disposa d’un ratolí amb roda, una quarta etiqueta va comptant el nombre d’increments que s’han fet amb la roda des de l’inici de l’aplicació.
El buscamines
L’objectiu d’aquesta activitat és utilitzar tots i cadascun dels coneixements adquirits fins ara per generar una aplicació de certa complexitat basada en una interfície gràfica. L’objectiu més important de tots és comprendre com es garanteix la modularitat d’una aplicació mitjançant el patró Model-Vista-Controlador.
El joc del buscamines consisteix en una graella de caselles en blanc que es poden obrir prement-hi a sobre. L’objectiu del jugador és esbrinar sota quines caselles hi ha una mina oculta, però sense obrir-les. Per ajudar-lo en aquesta tasca, cada cop que s’obre una casella, si no conté una mina, mostra quantes caselles del voltant en contenen una (que sempre és un valor de 0 a 8). El jugador també té l’opció de marcar qualsevol casella en blanc en què sospita que hi ha una mina amb una bandera, de manera que queda bloquejada i no es pot obrir accidentalment.
El joc acaba quan en totes les caselles pendents d’obrir només hi ha mines. El joc perfecte és aquell en què el jugador no ha descobert cap mina. Aconseguir-ho requereix una combinació de sort i lògica.
Genereu un joc del buscamines mitjançant la biblioteca Swing. No cal usar gràfics o icones, és suficient usar caràcters per a cada element (per exemple, un asterisc vermell per representar una mina, una exclamació blava per a una bandera…). La manera de desenvolupar el joc és totalment lliure, no cal que la interfície sigui gaire complexa. De totes maneres, algunes de les funcionalitats bàsiques que es demanen són:
- Amb el botó de l’esquerra del ratolí s’obre una casella.
- Amb el botó dret del ratolí es marca una casella amb una bandera, o s’esborra si ja n’hi ha una.
- Abans de començar, el jugador indica les dimensions del tauler i quantes mines hi haurà (controlant que els valors siguin coherents).
- En acabar el joc, es mostra la puntuació obtinguda (es pot calcular com es vulgui), i es comença una nova partida.
- Cal complir estrictament el patró MVC. Sota cap concepte s’ha d’analitzar l’estat del joc a partir de l’estat de la GUI. Únicament s’ha de fer mitjançant consultes al Model.
Menús emergents (o pop-up menu)
L’objectiu d’aquesta activitat és estudiar el funcionament dels menús emergents.
Un dels elements típics dins una interfície gràfica són els menús emergents, que sorgeixen en pitjar amb el botó dret sobre certs components.
Genereu el codi Java necessari per mostrar un menú emergent en pitjar amb el botó dret del ratolí sobre un JPanel
definit mitjançant la variable jpanel
. El menú ha de tenir tres elements anomenats “La primera opció”, “La segona opció” i “La tercera opció”.
Taules
L’objectiu d’aquesta activitat és repassar com es vincula un model a un objecte JTable
de manera que en tot moment la representació en pantalla sigui fidel al seu estat.
Completeu el fragment de codi següent per poder visualitzar correctament una taula. El codi que falta està ubicat en els llocs marcats amb ???, si bé a cadascun d’aquests llocs pot correspondre més d’una línia de codi:
public int getColumnCount() { ??? } public int getRowCount() { ??? } ??? } ??? } ??? data[row][col] = value; ??? } //Afegeix una fila amb caselles buides al final de la taula public void afegirFila() { ??? } }
Traducció a applet
Els objectius d’aquesta activitat són veure com és possible traduir una aplicació simple d’escriptori a un applet Java sense gaire esforç i veure els beneficis de separar el Model de la Vista i el Controlador, en permetre variar aspectes de la interfície gràfica sense haver de modificar en absolut el codi de les classes del Model.
Modifiqueu el d’exemple “Calculadora”, disponible al final d’aquest enunciat, de manera que s’executi en un navegador web com a applet. Per fer aquesta tasca, no es pot modificar la classe associada al Model (la classe Calculadora.java
).