Di seguito un esempio di codice Java che crea una semplice interfaccia grafica utente (GUI) utilizzando la libreria Swing di Java. L’interfaccia grafica presenta un JFrame with background image ovvero ha uno sfondo immagine, un pulsante “Incrementa” che incrementa un contatore quando viene premuto.
Esempio JFrame with background image
import javax.swing.*;
import java.awt.*;
public class GUI extends JFrame {
private int contatore = 0;
private JLabel labelContatore;
public GUI() {
// Impostazione dell'immagine di sfondo
ImageIcon immagineSfondo = new ImageIcon("image.jpg");
JLabel labelSfondo = new JLabel(immagineSfondo);
labelSfondo.setBounds(0, 0, immagineSfondo.getIconWidth(), immagineSfondo.getIconHeight());
// Creazione della JLabel per visualizzare il contatore
labelContatore = new JLabel("Contatore: " + contatore);
labelContatore.setBounds(50, 100, 100, 30);
Font font = new Font("Serif", Font.PLAIN,18);
labelContatore.setFont(font);
labelContatore.setForeground(Color.BLUE);
// Creazione del JButton per incrementare il contatore
JButton buttonIncrementa = new JButton("Incrementa");
buttonIncrementa.addActionListener(new IncrementListener(labelContatore));
buttonIncrementa.setBounds(50, 50, 100, 30);
// Impostazione del layout manager a null per il content pane
getContentPane().setLayout(null);
// Aggiunta degli elementi al content pane del JFrame
getContentPane().add(buttonIncrementa);
getContentPane().add(labelContatore);
getContentPane().add(labelSfondo);
// Impostazione delle dimensioni del JFrame e visualizzazione
setSize(immagineSfondo.getIconWidth(), immagineSfondo.getIconHeight());
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}
Il codice crea una nuova classe chiamata GUI che estende la classe JFrame di Swing. Inizialmente, la classe definisce due variabili di istanza: un contatore intero e un JLabel per visualizzare il valore del contatore.
All’interno del costruttore della classe GUI, viene impostata un’immagine di sfondo utilizzando un’istanza della classe ImageIcon. Viene quindi creato un nuovo JLabel e aggiunto al JFrame per visualizzare il valore del contatore. Questa JLabel viene personalizzata con un font, un colore del testo e una posizione specifica sul JFrame.
Successivamente viene creato un JButton chiamato “buttonIncrementa” e aggiunto al JFrame. Il JButton ha un ActionListener associato ad esso, che viene creato utilizzando una classe anonima che implementa l’interfaccia ActionListener. Quando il pulsante viene premuto, l’azione dell’ActionListener viene eseguita e il valore del contatore viene incrementato di uno.
Infine, il layout manager per il contenuto del JFrame viene impostato su null, il contenuto viene aggiunto al JFrame e le dimensioni del JFrame vengono impostate in base alle dimensioni dell’immagine di sfondo. Il JFrame viene reso non ridimensionabile e impostato per essere chiuso quando viene chiusa la finestra. Infine, la finestra viene impostata per essere visibile.
Ascoltatore IncrementListener
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class IncrementListener implements ActionListener {
private JLabel labelContatore;
private int contatore;
IncrementListener(JLabel labelContatore){
contatore = 0;
this.labelContatore = labelContatore;
}
@Override
public void actionPerformed(ActionEvent e) {
// Incremento del contatore e aggiornamento della JLabel
contatore++;
labelContatore.setText("Contatore: " + contatore);
}
}
Questo codice definisce una classe chiamata “IncrementListener” che implementa l’interfaccia ActionListener di Java. Questa classe è utilizzata come ascoltatore di eventi per il pulsante “Incrementa” nell’interfaccia grafica dell’esempio precedente.
La classe IncrementListener ha due variabili di istanza: un JLabel per visualizzare il valore del contatore e un intero contatore. Nel costruttore della classe, il valore del contatore viene impostato su zero e viene memorizzato il riferimento alla JLabel.
La classe ha un metodo “actionPerformed” che viene chiamato quando il pulsante “Incrementa” viene premuto. Quando viene premuto il pulsante, l’oggetto ActionListener associato a esso, ovvero un’istanza della classe IncrementListener, riceve un evento di tipo ActionEvent. Il metodo actionPerformed incrementa il valore del contatore e aggiorna la JLabel per visualizzare il nuovo valore.
Quando l’evento viene ricevuto, il metodo actionPerformed viene eseguito e il valore del contatore viene incrementato di uno. Inoltre, il testo del JLabel associato viene aggiornato per visualizzare il nuovo valore del contatore. Quando l’utente preme il pulsante “Incrementa”, l’interfaccia grafica aggiorna il valore del contatore e lo visualizza sulla JLabel.
Infine la classe con l’Entry Point per l’esempio JFrame with background image :
public class Main {
public static void main(String[] args) {
new GUI();
}
}