Caselle Combinate
-
Upload
cinzia-bocchi -
Category
Documents
-
view
236 -
download
0
description
Transcript of 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
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
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
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
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
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
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