Professional Documents
Culture Documents
In questa dispensa vengono presentate le principali caratteristiche delle caselle combinate (javax.swing.JComboBox). Lesempio mostrer anche come creare URI e come utilizzare lAPI Desktop. Prima di analizzare le funzionalit delle caselle combinate, vediamo come queste si collocano nella gerarchia delle classi di Java.
O bj e ct
Co m p on en t
Co nta in e r
JCo m p on en t
JComboBox
Per attivare una casella di controllo, l'utente pu utilizzare il mouse oppure la barra spaziatrice (quando la casella ha il focus). La classe JComboBox parametrica e la sua definizione : public class JComboBox<E> extends JComponent implements ItemSelectable, ListDataListener, ActionListener, Accessible
public void setEditable (boolean b) Rende la casella di testo, associata alla casella combinata, editabile (se b vale true) o non 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 opzioni presenti in elenco.
public boolean isEditable () Restituisce true se la casella combinata editabile; false altrimenti. Per default, una casella combinata non editabile.
public void setMaximumRowCount (int righe) Imposta il numero massimo di opzioni (righe) da visualizzare, quando si fa clic sulla freccia associata alla casella combinata. Se gli elementi presenti in elenco sono in numero 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 di visualizzare, senza usare una barra di scorrimento verticale.
public void setSelectedItem (Object opzione) Seleziona l'opzione passata come parametro, all'interno della casella combinata, ma solo se l'opzione in elenco oppure se, pur non essendo in elenco, la casella combinata 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 combinata. Se non ci sono selezioni correnti, restituisce -1.
nella
casella
public void setEnabled (boolean b) Abilita (se b true) o disabilita (se b false) la casella combinata. In una casella combinata disabilitata, non possibile selezionare opzioni in elenco o aggiungerne di nuove, nel caso sia editabile. Ridefinisce (override) il metodo setEnabled della classe JComponent.
@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(); } 4 Bocchi Cinzia Ultimo aggiornamento: 25/10/2011
//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", 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); } }
"Picasa"};
In Java, la creazione di un URI avviene mediante i costruttori della classe java.net.URI. Il costruttore pi semplice, che stato utilizzato nellesempio precedente, ha questa firma:
public URI(String str) throws URISyntaxException Trasforma la stringa passata come parametro in un URI. Lancia una eccezione controllata URISyntaxException se la stringa non rispetta le regole sintattiche stabilite dalle specifiche. Lancia anche una eccezione incontrollata di tipo NullPointerException, se la stringa nulla.
Prima di utilizzare lAPI Desktop bene accertarsi che sia supportata, utilizzando il metodo:
public static boolean isDesktopSupported() Restituisce true se lAPI Desktop supportata dalla piattaforma in uso, false altrimenti. Se il metodo isDesktopSupported restituisce true, possibile ottenere una istanza di Desktop utilizzando il metodo statico:
Dopo aver ottenuto listanza di Desktop, possibile aprire una risorsa web nel browser - in questo caso lURI un URL; inviare una mail - in questo caso lURI un indirizzo di posta elettronica; aprire, editare, o stampare una risorsa - in questo caso lURI il pathname di un file. Ogni attivit chiama unazione 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 supportate dallistanza di Desktop (cio dalla piattaforma in uso), utilizzando il metodo:
public boolean isSupported(Desktop.Action action) Restituisce true se lazione supportata, false altrimenti.
6 Bocchi Cinzia Ultimo aggiornamento: 25/10/2011
Durante lo svolgimento di queste verifiche opportuno disabilitare i componenti dellinterfaccia associati alle varie operazioni, utilizzando il gi noto metodo:
Quando i controlli sono stati effettuati e hanno dato esiti positivi, possibile invocare le varie azioni utilizzando i seguenti metodi della classe Desktop:
public void browse(URI uri) throws IOException Visualizza luri nel browser di default. public void mail() throws IOException Lancia 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 IOException Apre il file specificato con lapplicazione associata dal sistema. public void edit(File file) throws IOException Apre il file specificato nelleditor associato dal sistema. public void print(File file) throws IOException Stampa il file specificato utilizzando il comando print del sistema. Si osservi che tutti i metodi precedenti lanciano una eccezione controllata di tipo IOException.
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. 7 Bocchi Cinzia Ultimo aggiornamento: 25/10/2011