← Índex del curs Exercicis

Unitat 8. Interfícies Gràfiques

Unitat Didàctica 8:

En aquesta unitat aprendràs:

Fonaments de les aplicacions d'escriptori amb interfície gràfica d'usuari (GUI)
Finestres i components essencials: JFrame, JButton, JLabel i JTextField
Model de programació orientat a esdeveniments (Event-Driven Programming)
Controladors d'esdeveniments amb ActionListener i expressions lambda
Creació de formularis interactius per a l'entrada, validació i visualització de dades

1. Introducció a les Interfícies Gràfiques (GUI)

Fins ara hem interactuat amb els programes a través de la consola i fitxers de text. En el desenvolupament d'aplicacions per a usuaris finals, les Interfícies Gràfiques d'Usuari (GUI) permeten una interacció visual intuïtiva mitjançant finestres, botons, formularis i menús.

Java inclou per defecte biblioteques gràfiques com Swing (paquet javax.swing) i AWT (paquet java.awt), que permeten construir interfícies multiplataforma que s'executen igual a Windows, macOS i Linux.

2. Finestres i Components Visuals Bàsics

Els components bàsics més utilitzats són:

Exemple: Finestra senzilla amb Swing

import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JButton; import java.awt.FlowLayout; void main() { // Creem la finestra principal JFrame finestra = new JFrame("La meva primera finestra"); finestra.setSize(350, 150); finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); finestra.setLayout(new FlowLayout()); // Disposició fluida dels components // Creem els components JLabel etiqueta = new JLabel("Hola des d'una interfície gràfica!"); JButton boto = new JButton("D'acord"); // Afegim els components a la finestra finestra.add(etiqueta); finestra.add(boto); // Fem visible la finestra finestra.setVisible(true); }

3. Programació Orientada a Esdeveniments (Event-Driven)

A diferència dels programes lineals per consola, en una aplicació gràfica l'ordre d'execució el determina l'usuari:

Associar un ActionListener amb una expressió Lambda

Gràcies a les expressions lambda de Java, podem programar la resposta al clic d'un botó de manera neta i concisa:

int comptador = 0; JLabel resultat = new JLabel("Clics: 0"); JButton boto = new JButton("Fes clic aquí"); // En Java modern, ActionListener és una interfície funcional que podem implementar amb una lambda: boto.addActionListener(e -> { comptador++; resultat.setText("Clics: " + comptador); });

4. Creació de Formularis Interactius

Un formulari típic combina l'entrada d'un JTextField, el clic d'un JButton per processar les dades, i l'actualització d'un JLabel amb la resposta:

import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JButton; import java.awt.FlowLayout; void main() { JFrame finestra = new JFrame("Conversor d'Euros a Dòlars"); finestra.setSize(380, 160); finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); finestra.setLayout(new FlowLayout()); JLabel etiquetaEntrada = new JLabel("Quantitat en €:"); JTextField campEuros = new JTextField(8); JButton botoConvertir = new JButton("Convertir a $"); JLabel etiquetaResultat = new JLabel("Resultat: 0.00 $"); botoConvertir.addActionListener(e -> { try { double euros = Double.parseDouble(campEuros.getText()); double dolars = euros * 1.08; // Taxa de canvi d'exemple etiquetaResultat.setText(String.format("Resultat: %.2f $", dolars)); } catch (NumberFormatException ex) { etiquetaResultat.setText("Introdueix un nombre vàlid!"); } }); finestra.add(etiquetaEntrada); finestra.add(campEuros); finestra.add(botoConvertir); finestra.add(etiquetaResultat); finestra.setVisible(true); }

Exercicis Pràctics i Reptes

Posa a prova els teus coneixements dissenyant finestres, gestors de clics i formularis de càlcul.

Exercicis