Elementi dell'interfaccia utente SWING: Componenti

12

Click here to load reader

description

Elementi dell'interfaccia utente SWING - Componenti Classi esaminate: JLabel, JButton, JTextField, JPasswordField, JTextComponent, ImageIcon. Esempi: aggiungere etichette a un frame, aggiungere caselle di testo e password a un frame, aggiungere pulsanti a un frame.

Transcript of Elementi dell'interfaccia utente SWING: Componenti

Page 1: Elementi dell'interfaccia utente SWING: Componenti

Elementi dell’interfaccia utente: componenti

I componenti dell'interfaccia utente sono elementi che possono essere aggiunti all'interno di contenitori (frame e pannelli). In questa dispensa prenderemo in considerazione solo i seguenti componenti di base:

• etichette (label) - istanze della classe JLabel;• pulsanti (button) - istanze della classe JButton;• caselle di testo (textfield) - istanze della classe JTextField;• caselle di password (passwordfield) - istanze della classe JpasswordField.

JComponent

AbstractButton JLabel JTextComponent

JButton JTextField

JPasswordField

Etichette: la classe JLabel

Un’etichetta contiene una riga di testo che non può essere modificata dall’utente, ma solo dall’applicazione. Le etichette risultano molto utili per fornire, attraverso delle semplici frasi, indicazioni all’utente sul contenuto dell’interfaccia o sulle operazioni che dovrà compiere.

Costruttori della classe JLabel

• public JLabel()Crea un'etichetta senza alcun contenuto.L'etichetta è centrata verticalmente nell'area in cui è visualizzata.

• public JLabel(String testo)Costruisce un'etichetta centrata verticalmente e con il testo specificato, allineato a sinistra.

• public JLabel(Icon icona)Costruisce un'etichetta centrata verticalmente e orizzontalmente, contenente l'icona specificata.

Bocchi CinziaUltimo aggiornamento: 01/02/2013

1

Page 2: Elementi dell'interfaccia utente SWING: Componenti

• public JLabel(String testo, int allineamento)Costruisce un'etichetta, centrata verticalmente, con testo e allineamento orizzontale specificati.

• public JLabel(Icon icona, int allineamento)Costruisce un'etichetta, centrata verticalmente, contenente l’icona specificata e con l’allineamento orizzontale indicato.

• public JLabel(String testo, Icon icona, int allineamento)Costruisce un'etichetta, centrata verticalmente, contenente il testo e l’icona specificati e con l’allineamento orizzontale indicato. Il testo è collocato sul bordo inferiore dell’immagine.

Il parametro allineamento specifica l’allineamento orizzontale e può assumere uno dei seguenti valori dell'interfaccia SwingConstants:− LEFT− CENTER− RIGHT− LEADING− TRAILING

Metodi utili della classe JLabel

• public String getText()Restituisce il testo dell'etichetta.

• public void setText(String testo)Imposta il testo dell'etichetta, come specificato.

• public Icon getIcon()Restituisce l'icona dell'etichetta.

• public void setIcon(Icon icona)Imposta l'icona dell'etichetta, come specificato.

• public int getIconTextGap()Restituisce lo spazio, in pixel, presente tra il testo e l'icona.

• public void setIconTextGap(int iconTextGap)Imposta lo spazio, in pixel, presente tra il testo e l'icona (il default è 4).

• public int getVerticalAlignment()Restituisce l'allineamento verticale del contenuto dell'etichetta. Tale valore può essere una delle seguenti costanti della classe SwingConstants:− TOP (in alto);− CENTER (centrato);− BOTTOM (in basso).

Bocchi CinziaUltimo aggiornamento: 01/02/2013

2

Page 3: Elementi dell'interfaccia utente SWING: Componenti

• public void setVerticalAlignment(int allineamento)Imposta l'allineamento verticale del contenuto dell'etichetta al valore specificato da allineamento.Il valore di default è CENTER.

• public int getHorizontalAlignment()Restituisce l'allineamento orizzontale del contenuto dell'etichetta.

• public void setHorizontalAlignment(int allineamento)Imposta l'allineamento orizzontale del contenuto dell'etichetta, al valore specificato da allineamento.

• public int getVerticalTextPosition()Restituisce la posizione verticale del testo dell'etichetta, relativamente all'icona. I valori restituiti possono essere TOP, CENTER, BOTTOM, definiti nell'interfaccia SwingConstants.

• public void setVerticalTextPosition(int textPosition)Imposta la posizione verticale del testo dell'etichetta, relativamente all'icona, in base a quanto specificato da textPosition. Il valore di default è CENTER.

• public int getHorizontalTextPosition()Restituisce la posizione orizzontale del testo dell'etichetta, relativamente all'icona.

• public void setHorizontalTextPosition(int textPosition)Imposta la posizione orizzontale del testo dell'etichetta, relativamente all'icona, in base a quanto specificato da textPosition.

• public void setLabelFor(Component c)Imposta il componente etichettato da questa etichetta. Il parametro è null se nessun componente è associato all’etichetta.

• public Component getLabelFor()Restituisce il componente etichettato da questa etichetta. Restituisce null se nessun componente è associato all’etichetta.

• protected String paramString()Restituisce una stringa che descrive l’etichetta. E’ usato per il debugging.

Icone: La classe ImageIcon

La classe ImageIcon è un’implementazione dell’interfaccia Icon che disegna icone a partire dalle immagini.

Costruttori della classe ImageIcon

• public ImageIcon(String filename)Crea un’icona a partire dal file immagine specificato.

Bocchi CinziaUltimo aggiornamento: 01/02/2013

3

Page 4: Elementi dell'interfaccia utente SWING: Componenti

• public ImageIcon(URL location)Crea un’icona a partire dall’url specificato.

Metodi utili della classe ImageIcon

• public void setDescription(String descrizione)Associa all’icona una descrizione.

• public String getDescription()Restituisce la descrizione associata all’icona.

• public int getIconWidth()Restituisce la larghezza dell’icona.

• public int getIconHeight()Restituisce l’altezza dell’icona.

Esempio: aggiungere una etichetta a un frame

L’esempio mostra come aggiungere al frame due etichette: una contenente solo testo e l’altra un’icona, come mostrato nella figura 1.

Figura 1 - Frame con due etichette

package cinziabb.uiproject0;import java.awt.Container;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;@SuppressWarnings("serial")public class MyFrame extends JFrame {

Bocchi CinziaUltimo aggiornamento: 01/02/2013

4

Page 5: Elementi dell'interfaccia utente SWING: Componenti

public static final int WIDTH = 450;public static final int HEIGHT = 300;public static final int X = 100;public static final int Y = 100;private JPanel panel;private Container contentPane;public MyFrame() {

super("MyFrame");setSize(WIDTH,HEIGHT);setLocation(X,Y);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

(1)//Etichetta con testoJLabel textLabel = new JLabel("Warning");

(2)//Etichetta con testo e iconaIcon icona = new

ImageIcon(getClass().getResource("warninglabelMin.jpg"));JLabel iconLabel = new JLabel(icona);

(3)//Inserimento delle etichette nel pannellopanel = new JPanel();panel.add(textLabel);panel.add(iconLabel);

//Inserimento del pannello nel framecontentPane = getContentPane();contentPane.add(panel);

}

public static void main(String args[]) {MyFrame frame= new MyFrame();frame.setVisible(true);

}}

(1) - Creiamo un’etichetta con testo “Warning”.

(2) - Creiamo un’etichetta con icona. L’cona viene creata a partire da un file jpg.

(3) - Le etichette vengono aggiunte al pannello con il metodo add.

Caselle di testo: la classe JTextField

Le caselle di testo contengono una riga di testo che può essere modificata sia dall’utente, sia dall’applicazione e solitamente sono utilizzate per le operazioni di input.

Bocchi CinziaUltimo aggiornamento: 01/02/2013

5

Page 6: Elementi dell'interfaccia utente SWING: Componenti

Costruttori della classe JTextField

• public JTextField()Crea una casella di testo vuota e con numero di colonne 0.

• public JTextField(String testo)Crea una casella di testo con il testo specificato e numero di colonne 0.

• public JTextField(int colonne)Costruisce una casella di testo vuota, con il numero di colonne specificato.

• public JTextField(String testo, int colonne)Costruisce una casella di testo contenente il testo specificato e con il numero di colonne indicato.

Metodi utili della classe JTextField

• public int getHorizontalAlignment()Restituisce l'allineamento orizzontale del testo. Possibili valori sono

− JTextField.LEFT;− JTextField.CENTER;− JTextField.RIGHT.

• public void setHorizontalAlignment(int alignment)Imposta l'allineamento orizzontale del testo in base al valore specificato come parametro.

• public int getColumns()Restituisce il numero di colonne della casella di testo.

• public void setColumns(int columns)Imposta il numero di colonne della casella di testo al valore specificato dal parametro.

• protected int getColumnWidth()Restituisce la larghezza di una colonna. Per default, la larghezza di una colonna coincide con la larghezza del carattere m, per il font usato.

• public void setFont(Font f)Imposta il font per la casella di testo. Ridefinisce il metodo setFont della classe JComponent.

Metodi utili ereditati dalla classe JTextComponent

La classe astratta JTextComponent appartiene al package javax.swing.text.

• public void setText(String testo)Imposta la casella di testo al testo specificato.

• public String getText()

Bocchi CinziaUltimo aggiornamento: 01/02/2013

6

Page 7: Elementi dell'interfaccia utente SWING: Componenti

Restituisce il testo contenuto nella casella di testo.

• public String getText(int offset, int lunghezza)Restituisce il testo contenuto nella parte di documento indicata.I parametri offset e lunghezza indicano rispettivamente l'inizio del testo e la lunghezza della stringa desiderata.

• public String getSelectedText()Restituisce il testo selezionato all'interno della casella di testo. Se la selezione è nulla o la casella di testo è vuota, restituisce null.

• public void setEditable(boolean b)Rende la casella di testo editabile o no, a seconda del valore del parametro.

• public void select(int inizio, int fine)Seleziona il testo compreso tra inizio e fine.

• public void selectAll()Seleziona tutto il testo presente nella casella di testo.

Caselle di password: la classe JPasswordField

Le caselle di testo contengono una riga di testo che può essere modificata sia dall’utente, sia dall’applicazione e solitamente sono utilizzate per le operazioni di input.

Costruttori della classe JPasswordField

• public JPasswordField()Crea una casella di password vuota e con numero di colonne 0.

• public JPasswordField(String testo)Crea una casella di password con il testo specificato e numero di colonne 0.

• public JPasswordField(int colonne)Costruisce una casella di password vuota, con il numero di colonne specificato.

• public JPasswordField(String testo, int colonne)Costruisce una casella di password contenente il testo specificato e con il numero di colonne indicato.

Metodi utili della classe JPasswordField

• public char[] getPassword()Restituisce il testo contenuto nella casella di password in un array di caratteri.

• public void setEchoChar(char c)

Bocchi CinziaUltimo aggiornamento: 01/02/2013

7

Page 8: Elementi dell'interfaccia utente SWING: Componenti

Imposta il carattere di echo della casella di password.

Esempio: aggiungere una casella di testo e una di password a un frame

L’esempio mostra come creare il frame di figura 2.

Figura 2 - Frame con etichette e caselle di testo

package cinziabb.uiproject1;import java.awt.Container;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextField;@SuppressWarnings("serial")public class MyFrame extends JFrame {

public static final int WIDTH = 600;public static final int HEIGHT = 100;public static final int X = 100;public static final int Y = 100;private JPanel panel;private Container contentPane;public MyFrame() {

super("MyFrame");setSize(WIDTH,HEIGHT);setLocation(X,Y);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

(1)//Casella di testoJLabel username = new JLabel("username:");JTextField textfield = new JTextField(20);

(2)//Casella di passwordJLabel password = new JLabel("password:");JTextField passwfield = new JPasswordField(20);

(3) //Inserimento delle etichette e delle caselle di testo nel pannellopanel = new JPanel();panel.add(username);panel.add(textfield);

Bocchi CinziaUltimo aggiornamento: 01/02/2013

8

Page 9: Elementi dell'interfaccia utente SWING: Componenti

panel.add(password);panel.add(passwfield);

//Inserimento del pannello nel framecontentPane = getContentPane();contentPane.add(panel);

}

public static void main(String args[]) {MyFrame frame= new MyFrame();frame.setVisible(true);

}}

(1) - Il codice crea una etichetta “username” e una casella di testo di 20 colonne.

(2) - Il codice crea una etichetta “password” e una casella di password di 20 colonne.

(3) - Le etichette e le caselle di testo/password vengono inserirte nel pannello. L’ordine di inserimento coincide con l’ordine di visualizzazione.

Pulsanti: la classe JButton

I pulsanti, che solitamente contengono un’etichetta, sono usati per invocare un’azione quando sono premuti dall’utente, mediante il mouse.

Costruttori della classe JButton

• public JButton()Crea un pulsante vuoto.

• public JButton(String testo)Costruisce un pulsante con il testo specificato.

• public JButton(Icon icona)Costruisce un pulsante con l'icona specificata.

• public JButton(String testo, Icon icona)Costruisce un pulsante con il testo e l'icona specificati.

Metodi utili ereditati dalla classe AbstractButton

AbstractButton è una classe astratta del package javax.swing.

• public String getText()Restituisce il testo del pulsante.

• public void setText(String testo)Imposta il testo del pulsante al parametro specificato.

Bocchi CinziaUltimo aggiornamento: 01/02/2013

9

Page 10: Elementi dell'interfaccia utente SWING: Componenti

• public Icon getIcon()Restituisce l'icona del pulsante.

• public void setIcon(Icon defaultIcon)Imposta l'icona del pulsante al parametro specificato.

• public Icon getRolloverSelectedIcon()Restituisce l'icona utilizzata per il rollover : passando con il mouse sull'icona, questa cambia.

• public void setRolloverSelectedIcon(Icon rolloverSelectedIcon)Imposta l'icona utilizzata per il rollover.

• public int getVerticalAlignment()Restituisce l'allineamento verticale del testo e dell'icona. I valori possibili sono:

− SwingConstants.CENTER (il default);− SwingConstants.TOP;− SwingConstants.BOTTOM .

• public void setVerticalAlignment(int alignment)Imposta l'allineamento verticale del testo e dell'icona, al parametro specificato.

• public int getHorizontalAlignment()Restituisce l'allineamento orizzontale del testo e dell'icona. I valori possibili sono:

− SwingConstants.RIGHT (il default); − SwingConstants.LEFT;− SwingConstants.CENTER.

• public void setHorizontalAlignment(int alignment)Imposta l'allineamento orizzontale del testo e dell'icona, al parametro specificato.

• public int getVerticalTextPosition()Restituisce la posizione verticale del testo, relativamente all'icona. Valori possibili sono:

− SwingConstants.CENTER (il default);− SwingConstants.TOP;− SwingConstants.BOTTOM .

• public void setVerticalTextPosition(int textPosition)Imposta la posizione verticale del testo, relativamente all'icona, al valore del parametro.

• public int getHorizontalTextPosition()Restituisce la posizione orizzontale del testo, relativamente all'icona. Valori possibili sono:

− SwingConstants.RIGHT; − SwingConstants.LEFT;− SwingConstants.CENTER.

• public void setHorizontalTextPosition(int textPosition)

Bocchi CinziaUltimo aggiornamento: 01/02/2013

10

Page 11: Elementi dell'interfaccia utente SWING: Componenti

Imposta la posizione orizzontale del testo, relativamente all'icona, al valore passato come parametro.

• public int getIconTextGap()Restituisce lo spazio tra il testo e l'icona.

• public void setIconTextGap(int iconTextGap)Imposta lo spazio tra il testo e l'icona, al valore specificato (il default è 4).

• public void doClick()Simula un clic del pulsante.

• public void doClick(int pressTime)Simula un clic del pulsante. Il pulsante rimane premuto per pressTime millisecondi.

• public void setEnabled(boolean b)Abilita o disabilita il pulsante, in base al valore del parametro.

Esempio: aggiungere un pulsante a un frame

L’esempio realizza il frame mostrato in figura 3.

Figura 3 - Frame con etichette, caselle di testo e pulsante

package cinziabb.uiproject2;import java.awt.Container;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextField;@SuppressWarnings("serial")public class MyFrame extends JFrame {

public static final int WIDTH = 600;public static final int HEIGHT = 100;public static final int X = 100;public static final int Y = 100;private JPanel panel;private Container contentPane;public MyFrame() {

super("MyFrame");

Bocchi CinziaUltimo aggiornamento: 01/02/2013

11

Page 12: Elementi dell'interfaccia utente SWING: Componenti

setSize(WIDTH,HEIGHT);setLocation(X,Y);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Casella di testoJLabel username = new JLabel("username:");JTextField textfield = new JTextField(20);//Casella di passwordJLabel password = new JLabel("password:");JTextField passwfield = new JPasswordField(20);//Inserimento delle etichette e delle caselle di testo nel pannellopanel = new JPanel();panel.add(username);panel.add(textfield);panel.add(password);panel.add(passwfield);

(1)//PulsanteJButton submit = new JButton("submit");//Inserimento del pulsante nel pannellopanel.add(submit);

//Inserimento del pannello nel framecontentPane = getContentPane();contentPane.add(panel);

}

public static void main(String args[]) {MyFrame frame= new MyFrame();frame.setVisible(true);

}}

(1) - Il codice crea il pulsante “submit” e lo aggiunge al pannello.

_____________________________________________________________Quest'opera è stata rilasciata con licenza Creative Commons Attribution-ShareAlike 3.0 Unported. Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/by-sa/3.0/ o spedisci una lettera a Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

Bocchi CinziaUltimo aggiornamento: 01/02/2013

12