NOTA! Questo sito utilizza i cookie e tecnologie simili.

Se non si modificano le impostazioni del browser, l'utente accetta. Per saperne di piu'

Approvo

Guida Java 2D - Capitolo 11: I bordi con Border e BorderFactory di Swing.

 

JFrame

 

E' possibile impostare un 'bordo' per ogni componente Swing.

Tale pratica risulta spesso utile per distinguere pannelli differenti inseriti in un JFrame o per evidenziare aree particolari (ad es., un pannello contenente un gruppo di RadioButton logicamente connessi).

 

 

 

Per creare un bordo si fa ricorso alla classe BorderFactory, che mette a disposizione dei metodi statici che restituiscono degli oggetti Border.

Esistono diversi tipi di bordi, ciascuno con un proprio aspetto; per una trattazione completa si rimanda alle API ufficiali di Border.

 

Basterà quindi invocare il metodo:

setBorder(Border b)   :   void

di JComponent (classe di Swing che estende Container ed è estesa dalle componenti GUI di Swing) per impostare il bordo di un oggetto.

 

La porzione di codice che segue definisce una classe eseguibile che mostra a video un JFrame contenente 5 pannelli JPanel, disposti sul JFrame col Layout BorderLayout, ciascuno dei quali è provvisto del proprio bordo colorato.

 

Ecco il codice:

import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;


public class ProvaBordi extends JFrame
{
private JPanel pannello1, pannello2, pannello3, pannello4, pannello5;
private Border bordo1, bordo2, bordo3, bordo4, bordo5;


public ProvaBordi()
{
this.setTitle("JFrame con 5 pannelli dotati di bordi colorati; BorderLayout.");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Toolkit mioToolkit = Toolkit.getDefaultToolkit();
Dimension dimensioniSchermo = mioToolkit.getScreenSize();

int larghezzaFrame, altezzaFrame;
larghezzaFrame = (int) (dimensioniSchermo.getWidth()/2);
altezzaFrame = (int) (dimensioniSchermo.getHeight()/2);

this.setSize(larghezzaFrame, altezzaFrame);

// NOTA IMPORTANTE: l'origine del sistema di riferimento dello schermo (punto (0,0)) è situata IN ALTO A SINISTRA; valori y positivi 'scendendo', x positivi proseguendo 'verso destra'.
this.setLocation(((int)dimensioniSchermo.getWidth()/4), ((int)dimensioniSchermo.getHeight()/4));

// Istanzio i pannelli
pannello1 = new JPanel();
pannello2 = new JPanel();
pannello3 = new JPanel();
pannello4 = new JPanel();
pannello5 = new JPanel();

// Istanzio i bordi colorati, di tipo "Line Border" con spessore di bordo 5
bordo1 = BorderFactory.createLineBorder(Color.red, 5);
bordo2 = BorderFactory.createLineBorder(Color.yellow, 5);
bordo3 = BorderFactory.createLineBorder(Color.green, 5);
bordo4 = BorderFactory.createLineBorder(Color.magenta, 5);
bordo5 = BorderFactory.createLineBorder(Color.cyan, 5);

// Imposto i bordi colorati per i pannelli
pannello1.setBorder(bordo1);
pannello2.setBorder(bordo2);
pannello3.setBorder(bordo3);
pannello4.setBorder(bordo4);
pannello5.setBorder(bordo4);

// Recupero il contentPane, imposto il layout GridLayout e aggiungo al JFrame i 5 pannelli.
Container contentPane = this.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(pannello1, BorderLayout.NORTH);
contentPane.add(pannello2, BorderLayout.SOUTH);
contentPane.add(pannello3, BorderLayout.EAST);
contentPane.add(pannello4, BorderLayout.WEST);
contentPane.add(pannello5, BorderLayout.CENTER);
}


public static void main(String[] args)
{
ProvaBordi pb = new ProvaBordi();
pb.setVisible(true);
}
}

 

 
Vai all'inizio della pagina