Java lezione 12

10
Applicazioni GUI: swing Package javax.swing

Transcript of Java lezione 12

Page 1: Java lezione 12

Applicazioni GUI: swing

Package javax.swing

Page 2: Java lezione 12

Differenze tra swing e awtLe classi di swing sono un’evoluzione di quelle di awt. In

particolare sono stati rivisti tutti i controlli di uso comune, mantenendo lo stesso nome preceduto da J: JButton, JTextField, JTextArea, JFrame, JPanel, JMenu, JMenuItem, Jmenu, JMenuBar (sono sottoclassi delle classi awt).

Inoltre sono stati aggiunti numerosi altri componenti, ne citiamo alcuni:

•JTable: si tratta di una tabella in grado di visualizzare dati, immagini…..

•JList: sostituisce la List di awt e si differenzia come comportamento

•JComboBox: sostituisce la Choice di awt•JRadioButton: sostituisce CheckBox, CheckBoxGroup di awt•JProgressBar: barra di scorrimento•JSlider: indicatore a scorrimento•JToolBar: barra degli strumenti•JOptionPane: fornisce numerose finestre di dialogo•JInternalFrame: finestre interne

Per aver una panoramica completa è possibile avviare l’applicazione

SwingSet2 presente nelle demo di java. Si note inoltre che con swing è possibile impostare un Look&Feel

indipendente dal sistema operativo sottostante.

Page 3: Java lezione 12

La prima finestraPer creare una finestra è necessario istanziare un oggetto che sia una sottoclasse di JFrame. Si noti inoltre l’uso di show() per visualizzare la finestra e di alcuni metodi per settare le sue caratteristiche.import java.awt.*;import java.awt.event.*;import javax.swing.*;public class MiaFinestra extends JFrame{

public MiaFinestra(String title, int left, int top, int width, int height) {

setBounds(left,top,width,height);setTitle(title);

}

public static void main(String args[]){

MiaFinestra f=new MiaFinestra(“Hello Win”,100,200,300,200);

f.show();}

}Si noti che le differenze con awt finora sono minime.

Page 4: Java lezione 12

Gestione evento di chiusura

Una JFrame si chiude automaticamente cliccando sulla X, tuttavia è comunque possibile intercettare l’evento windowClosing.

public MiaFinestra(String title, int left, int top, int width, int height) { ……

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){ System.exit(0);}

});

}

Page 5: Java lezione 12

Uso di componentiLa costruzione dell’interfaccia viene nel costruttore:public class MiaFinestra extends JFrame{ private JButton pulsante=new JButton(“Premi qui”);

public MiaFinestra(String title, int left, int top, int width, int height) {

……. Container c=getContentPane(); //ricava il contenitore di

componenti //cioè l’area interna della Jframe //escluse la barra del titolo,

quella //dei menu e eventuali toolbar

c.add(pulsante); }

….. }Si noti l’uso del Container che non era previsto in awt.

Page 6: Java lezione 12

Posizionamento e LayoutPer quanta riguarda i Layout non ci sono particolari differenze

riguardo ad awt se non che il Layout non avviene applicato alla JFrame, ma al Containerpublic class MiaFinestra extends JFrame{ private JButton pulsante=new JButton(“Premi qui”);

public MiaFinestra(String title, int left, int top, int width, int height) {

……. Container c=getContentPane(); c.setLayout(null); //Layout nullo c.add(pulsante); //Aggiungiamo il pusante sulla Framepulsante.setBounds(100,100,100,50); //posizionato per

coordinate }

….. }

Page 7: Java lezione 12

JOptionPaneE’ un componente che permette di visualizzare finestre di dialogo, il

suo uso è molto semplice:

JOptionPane.showMessageDialog(owner,”File non trovato”);

int risp=JOptionPane.showConfirmDialog(owner,

”Vuoi proseguire”, “Selezionare una opzione”,

JOptionPane.YES_NO_OPTION);risp assume i valori delle costanti YES_OPTION, NO_OPTION, CANCEL_OPTION

Page 8: Java lezione 12

JScrollPaneIn swing le barre di scorrimento non compaiono automaticamente

come in awt, ma è obbligatorio inserire il componente che necessita delle barre in un JScrollPane:JTextArea txt=new JTeatArea(20,50);JScrollPane scr=new JScrollPane(txt); //costruito sulla JTextAreaTale JScrollPane può essere poi aggiunto come un normale pannello

alla JFrame.Lo stesso deve essere fatto per JList, JTable e in generale quando

servono le barre di scorrimento.

Page 9: Java lezione 12

JList e JComboBoxA differenza delle corrispondenti List e Choice di awt che vengono

popolate tramite il metodo addItem, possono essere costruite direttamente partendo da-Un array di Object-Un Vector-Un modello

String elenco={“Uno”,”Due”,”Tre”};JList lst=new JList(elenco);lst.setListData(nuovoElenco);E’ molto interessante l’uso dei modelli che permette di definire classi

apposite che descrivono il contenuto delle liste.

Page 10: Java lezione 12

JTableLa JTable può essere popolata -Un array bidimensionale di Object, più un array con i nomi delle

colonne-Un Vector di valori e un Venctor di nomi delle colonne-Un modello di tabella.

Particolarmente interessante è l’uso del modello di tabella.