JFrame with background image

spacecoding-blog_jframe_with_background_image

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();
    }
}

Pubblicato da Carlo Contardi

Carlo Contardi, docente di informatica e sviluppatore Full Stack, condivide la sua passione per la programmazione e l’informatica attraverso il suo blog Space Coding. Offre preziosi consigli e soluzioni pratiche a chi vuole imparare a programmare o migliorare le proprie abilità. 🚀👨‍💻

Translate »