Caselle Combinate

7
 Caselle combinate In questa dispensa vengono presen tat e le principali caratteristiche delle caselle combinate (javax.swing.JComboBox). L’esempio mostrerà anche come creare URI e come utilizzare l’API Desktop. Prima di analizzare le funzionalità delle caselle combinate, vediamo come queste si collocano nella gerarchia delle classi di Java. Object Component Container  JComponent JComboBox Caselle combinate: la classe JComboBox Una casella combinata fornisce un elenco di opzioni f ra le quali scegliere. Le opzioni presenti nella casella combinata:   sono ordinate;   sono individuabili attraverso un indice: la prima opzione ha indice 0, la seconda ha indice 1, e così via. Le caselle combinate sono così chiamate perché combinano l'elenco di opzioni con una casella di testo che visualizza:   per default, la prima opzione dell'elenco;   oppure l'opzione selezionata. Inoltre, è possibile rendere la casella combinata editabile consentendo all'utente di inser ir e una vo ce, non pr esente in elenco , all'interno della casella di test o. L'inserimento di una nuova opzione non altera in alcun caso il contenuto dell'elenco. Una casella combinata non editabile ha l'aspetto di una casella di testo con una freccia sul lato destro, come si osserva nella seguente figura. Bocchi Cinzia Ultimo aggiornamento: 25/10/2011 1

description

Principali caratteristiche e funzionalità delle caselle combinate (javax.swing.JComboBox). L’esempio mostrerà anche come creare URI e come utilizzare l’API Desktop per visualizzare una risorsa nel browser di default.

Transcript of Caselle Combinate

Page 1: Caselle Combinate

5/11/2018 Caselle Combinate - slidepdf.com

http://slidepdf.com/reader/full/caselle-combinate 1/7

 

Caselle combinate

In questa dispensa vengono presentate le principali caratteristiche delle casellecombinate (javax.swing.JComboBox). L’esempio mostrerà anche come creare URI ecome utilizzare l’API Desktop.

Prima di analizzare le funzionalità delle caselle combinate, vediamo come queste sicollocano nella gerarchia delle classi di Java.

Object

Component

Container  

JComponent

JComboBox

Caselle combinate: la classe JComboBox

Una casella combinata fornisce un elenco di opzioni fra le quali scegliere.Le opzioni presenti nella casella combinata: –  sono ordinate; –  sono individuabili attraverso un indice: la prima opzione ha indice 0, la seconda ha

indice 1, e così via.

Le caselle combinate sono così chiamate perché combinano l'elenco di opzioni con unacasella di testo che visualizza: –  per default, la prima opzione dell'elenco; –  oppure l'opzione selezionata.

Inoltre, è possibile rendere la casella combinata editabile consentendo all'utente diinserire una voce, non presente in elenco, all'interno della casella di testo.L'inserimento di una nuova opzione non altera in alcun caso il contenuto dell'elenco.

Una casella combinata non editabile ha l'aspetto di una casella di testo con una freccia

sul lato destro, come si osserva nella seguente figura.

Bocchi CinziaUltimo aggiornamento: 25/10/2011

1

Page 2: Caselle Combinate

5/11/2018 Caselle Combinate - slidepdf.com

http://slidepdf.com/reader/full/caselle-combinate 2/7

 

Fig. 1 Frame con casella combinata

Per attivare una casella di controllo, l'utente può utilizzare il mouse oppure la barraspaziatrice (quando la casella ha il focus).

La classe JComboBox è parametrica e la sua definizione è:

public class JComboBox<E>extends JComponentimplements ItemSelectable, ListDataListener, ActionListener, Accessible

Costruttori della classe JComboBox

• public JComboBox ()Crea una casella combinata senza opzioni in elenco.

• public JComboBox (E [] elenco_opzioni )Crea una casella combinata contenente l'elenco di opzioni specificato.Il parametro elenco _ opzioni è un array di elementi di tipo E che contiene le voci dainserire nell'elenco: queste verranno aggiunte nello stesso ordine in cui compaiononell'array.

Metodi utili della classe JComboBox

• public void addItem (E opzione)

Aggiunge l'opzione specificata alla fine dell'elenco.

• public void insertItemAt (E opzione, int indice)Inserisce l'opzione specificata in elenco, nella posizione indicata da indice.

• public void removeItem (Object opzione)Rimuove dall'elenco l'opzione specificata.

• public void removeItemAt (int indice)Rimuove dall'elenco l'opzione che si trova nella posizione specificata da indice.

• public void removeAllItems ()

Bocchi CinziaUltimo aggiornamento: 25/10/2011

2

Page 3: Caselle Combinate

5/11/2018 Caselle Combinate - slidepdf.com

http://slidepdf.com/reader/full/caselle-combinate 3/7

 

Rimuove dall'elenco tutte le opzioni.

• public void setEditable (boolean b)Rende la casella di testo, associata alla casella combinata, editabile (se b vale true) onon modificabile (se b vale false). Nel primo caso l'utente può inserire un'opzione non

presente in elenco; nel secondo caso si deve limitare a selezionare una delle opzionipresenti in elenco.

• public boolean isEditable ()Restituisce true se la casella combinata è editabile; false altrimenti. Per default, unacasella combinata non è editabile.

• public void setMaximumRowCount (int righe)Imposta il numero massimo di opzioni (righe) da visualizzare, quando si fa clic sullafreccia associata alla casella combinata. Se gli elementi presenti in elenco sono innumero superiore a righe, la casella combinata viene dotata automaticamente di una

barra di scorrimento verticale.

• public int getMaximumRowCount ()Restituisce il numero massimo di righe che la casella di controllo è in grado divisualizzare, senza usare una barra di scorrimento verticale.

• public void setSelectedItem (Object opzione)Seleziona l'opzione passata come parametro, all'interno della casella combinata, masolo se l'opzione è in elenco oppure se, pur non essendo in elenco, la casellacombinata è editabile. Se l'opzione non è in elenco e la casella combinata non èeditabile, la selezione corrente non cambia.

• public Object getSelectedItem ()Restituisce l'opzione correntemente selezionata all'interno della casella combinata.

• public void setSelectedIndex (int indice)Seleziona l'opzione della casella combinata, che si trova nella posizione specificata.

• public int getSelectedIndex ()Restituisce la posizione dell'opzione correntemente selezionata nella casellacombinata. Se non ci sono selezioni correnti, restituisce -1.

• public void setEnabled (boolean b)Abilita (se b è true) o disabilita (se b è false) la casella combinata. In una casellacombinata disabilitata, non è possibile selezionare opzioni in elenco o aggiungerne dinuove, nel caso sia editabile. Ridefinisce (override) il metodo setEnabled della classeJComponent.

• public int getItemCount ()Restituisce il numero di opzioni in elenco.

• public Object getItemAt (int indice)

Bocchi CinziaUltimo aggiornamento: 25/10/2011

3

Page 4: Caselle Combinate

5/11/2018 Caselle Combinate - slidepdf.com

http://slidepdf.com/reader/full/caselle-combinate 4/7

 

Restituisce l'opzione che si trova in elenco, nella posizione specificata.

Eventi generati da una JComboBox

Quando una combobox viene selezionata, facendo clic su di essa, si genera sia unevento Item che un evento Action.

Esempio: combobox non editabile

Il seguente codice crea una GUI uguale a quella illustrata nella figura 1. La comboboxè inserita direttamente nel pannello del contenuto del frame, dopo aver modificato illayout da border a flow.Quando si seleziona una voce dall’elenco si apre, nel browser, la pagina webcorrispondente al servizio indicato.

import java.awt.Container;

import java.awt.Desktop;

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.IOException;

import java.net.URI;

import java.net.URISyntaxException;

import javax.swing.JComboBox;

import javax.swing.JFrame;

@SuppressWarnings("serial")

 public class ComboBoxFrame extends JFrame{

 public ComboBoxFrame(){

super ("Combo Box");

setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE );Container contentPane = getContentPane();

contentPane.setLayout(new FlowLayout());

//variabili contenenti gli URI

URI blogger = null;

URI google = null;

URI youtube = null;

URI googlemaps = null;

URI picasa = null;

//preparazione degli URI

try{

blogger = new URI("http://www.blogger.com");

google = new URI("http://www.google.com");

youtube = new URI("http://www.youtube.com");

googlemaps = new URI("http://maps.google.com");

picasa = new URI("http://picasa.google.com");

}

catch(URISyntaxException e){

e.printStackTrace();

}

Bocchi CinziaUltimo aggiornamento: 25/10/2011

4

Page 5: Caselle Combinate

5/11/2018 Caselle Combinate - slidepdf.com

http://slidepdf.com/reader/full/caselle-combinate 5/7

 

//preparazione l'array contenente gli URI

final URI[] uri = {blogger, google, youtube, googlemaps, picasa};

//creazione della combo box

String[] items = {"Blogger", "Google", "Youtube", "Google Maps",

"Picasa"};

final JComboBox<String> combo = new JComboBox<String>(items);contentPane.add(combo);

//disabilita la combo box

combo.setEnabled(false); //prima occorre verificare se le Desktop

API sono utilizzabili

if (Desktop.isDesktopSupported ()) {

  final Desktop desktop = Desktop.getDesktop();if (desktop.isSupported( Desktop.Action.BROWSE  ))

combo.setEnabled(true); //se la verifica va a buon

fine, abilita la combo box

//gestione dell'evento "selezione di un item"combo.addActionListener(new ActionListener(){

 public  void  actionPerformed(ActionEvent e){

int selectedIndex = combo.getSelectedIndex();

if (selectedIndex != -1){

try {

desktop.browse(uri[selectedIndex]);

}

catch (IOException e1) {

e1.printStackTrace();

}

}

}

});

}

}

 public static  void  main(String[] args){

ComboBoxFrame frame = new ComboBoxFrame();

frame.pack();

frame.setVisible(true);

}

}

URI: Uniform Resource Identifier

<<Uno Uniform Resource Identifier (URI, acronimo più generico rispetto ad "URL")è una stringa che identifica univocamente una risorsa generica che può essere unindirizzo Web, un documento, un'immagine, un file, un servizio, un indirizzo di postaelettronica, ecc. L'URL è un URI, o più comunemente chiamato indirizzo web.>>

[da Wikipedia http://it.wikipedia.org/wiki/Uniform_Resource_Identifier]

Bocchi CinziaUltimo aggiornamento: 25/10/2011

5

Page 6: Caselle Combinate

5/11/2018 Caselle Combinate - slidepdf.com

http://slidepdf.com/reader/full/caselle-combinate 6/7

 

In Java, la creazione di un URI avviene mediante i costruttori della classe java.net.URI. Il costruttore più semplice, che è stato utilizzato nell’esempioprecedente, ha questa firma:

• public URI(String str) throws URISyntaxException

Trasforma la stringa passata come parametro in un URI. Lancia una eccezionecontrollata URISyntaxException se la stringa non rispetta le regole sintattichestabilite dalle specifiche. Lancia anche una eccezione incontrollata di tipoNullPointerException, se la stringa è nulla.

Funzionalità dell’API Desktop

L’API Desktop consente di: aprire uno specifico URI con il browser di default, avviare il client di posta elettronica di default,

lanciare applicazioni per aprire, editare e stampare file; l’applicazione lanciata èquella associata dal sistema al file (es. writer, word, pdf,...).

Prima di utilizzare l’API Desktop è bene accertarsi che sia supportata, utilizzando ilmetodo:

• public static boolean isDesktopSupported()Restituisce true se l’API Desktop è supportata dalla piattaforma in uso, falsealtrimenti.

Se il metodo isDesktopSupported restituisce true, è possibile ottenere una istanza di

Desktop utilizzando il metodo statico:

• public static Desktop getDesktop()

Dopo aver ottenuto l’istanza di Desktop, è possibile

− aprire una risorsa web nel browser - in questo caso l’URI è un URL;

− inviare una mail - in questo caso l’URI è un indirizzo di posta elettronica;

− aprire, editare, o stampare una risorsa - in questo caso l’URI è il pathname di unfile.

Ogni attività chiama un’azione rappresentata da una delle seguenti istanze:

− Desktop.Action.BROWSE,− Desktop.Action.MAIL,

− Desktop.Action.OPEN,

− Desktop.Action.EDIT,

− Desktop.Action.PRINT.

Prima di lanciare una delle azioni citate, è necessario verificare se sono supportatedall’istanza di Desktop (cioè dalla piattaforma in uso), utilizzando il metodo:

• public boolean isSupported(Desktop.Action action)Restituisce true se l’azione è supportata, false altrimenti.

Bocchi CinziaUltimo aggiornamento: 25/10/2011

6

Page 7: Caselle Combinate

5/11/2018 Caselle Combinate - slidepdf.com

http://slidepdf.com/reader/full/caselle-combinate 7/7

 

Durante lo svolgimento di queste verifiche è opportuno disabilitare i componentidell’interfaccia associati alle varie operazioni, utilizzando il già noto metodo:

• public void setEnabled(boolean b)

Quando i controlli sono stati effettuati e hanno dato esiti positivi, è possibile invocarele varie azioni utilizzando i seguenti metodi della classe Desktop:

• public void browse(URI uri) throws IOExceptionVisualizza l’uri nel browser di default.

• public void mail() throws IOExceptionLancia il client di posta di default.

• public void mail(URI mailtoURI) throws IOException

Lancia il client di posta di default e imposta i campi del messaggio di posta (to, cc,subject, body,...) ai valori passati come parametri.

• public void open(File file) throws IOExceptionApre il file specificato con l’applicazione associata dal sistema.

• public void edit(File file) throws IOExceptionApre il file specificato nell’editor associato dal sistema.

• public void print(File file) throws IOExceptionStampa il file specificato utilizzando il comando print del sistema.

Si osservi che tutti i metodi precedenti lanciano una eccezione controllata di tipoIOException.

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: 25/10/2011

7