Guida alla programmazione delle GUI, interfacce grafiche in Java 2D - 11: i bordi con Border e BorderFactory di Swing
Capitolo 11: I bordi con Border e BorderFactory di Swing.
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); } }
|