Finestra con pannelli

 

 

 

Abbiamo chiesto di creare.

  1. Una finestra di dimensioni 400 x 400 pixel centrata nello schermo
  2. Che contiene due pannelli, uno in basso e l'altro centrato
  3. Dentro il pannello basso mettiamo un pulsante delle dimensioni 100 x 30 pixel
  4. Dentro il pannello centrato disegnamo un cerchio rosso con un bordo nero di 2 pixel di spessore.
    Il cerchio dovrà rimanere sempre al centro anche quando la finestra verrà ridimensionata
  5. Quando si cliccerà il pulsante il cerchio da rosso diventerà arancione e se cliccato di nuovo il cerchio tornerà ad essere rosso

Classe: FinestraConPannelli

 1 package finestraconpannelli;
 2 
 3 import javax.swing.*;
 4 import java.awt.*;
 5 
 6 public class FinestraConPannelli {
 7     private static Color coloreCerchio = Color.RED; // Colore iniziale del cerchio
 8 
 9     public static void main(String[] args) {
10         SwingUtilities.invokeLater(() -> {
11             JFrame frame = new JFrame("Finestra con Pannelli");
12             frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
13             
14             frame.setSize(400, 400);
15 
16             // Pannello centrale con cerchio
17             JPanel panelCentrale = new JPanel() {
18                 @Override
19                 protected void paintComponent(Graphics g) {
20                     super.paintComponent(g);
21                     g.setColor(coloreCerchio);
22                     int centerX = getWidth() / 2;
23                     int centerY = getHeight() / 2;
24                     int radius = 15; // Diametro / 2
25                     // Cerchio centrato
26                     g.fillOval(centerX - radius, centerY - radius, 2 * radius, 2 * radius); 
27 
28                     // Aggiungi un bordo nero di 2 pixel
29                     g.setColor(Color.BLACK);
30                     ((Graphics2D) g).setStroke(new BasicStroke(2));
31                     g.drawOval(centerX - radius, centerY - radius, 2 * radius, 2 * radius);
32                 }
33             };
34 
35             // Pannello in basso con pulsante
36             JPanel panelBasso = new JPanel();
37             JButton pulsante = new JButton("Cliccami");
38             pulsante.setPreferredSize(new Dimension(100, 30));
39             panelBasso.add(pulsante);
40 
41             // Aggiungi azione al pulsante
42             pulsante.addActionListener(e -> {
43                 // Cambia il colore del cerchio tra rosso e arancione
44                 if (coloreCerchio == Color.RED) {
45                     coloreCerchio = Color.ORANGE;
46                 } else {
47                     coloreCerchio = Color.RED;
48                 }
49                 panelCentrale.repaint(); // Ridisegna il pannello centrale
50             });
51             /*
52             // Centra la finestra sullo schermo
53             Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
54             int x = (int) ((dimension.getWidth() - frame.getWidth()) / 2);
55             int y = (int) ((dimension.getHeight() - frame.getHeight()) / 2);
56             frame.setLocation(x, y);
57             */
58             frame.setLocationRelativeTo(null);
59             
60             
61             // Utilizza un BorderLayout per posizionare i pannelli
62             frame.add(panelCentrale, BorderLayout.CENTER);
63             frame.add(panelBasso, BorderLayout.SOUTH);
64             frame.setVisible(true);
65         });
66     }
67 }