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

 

Pagina di Francesco Milanese (redbaron85) su Facebook   Pagina di Francesco Milanese (redbaron85) su Google Plus   Profilo di Francesco Milanese (redbaron85) su LinkedIn   Pagina di Francesco Milanese (redbaron85) su Twitter   Canale Youtube di Francesco Milanese (redbaron85ct)

Vai all'inizio della pagina