SlideShare a Scribd company logo
1 of 10
Applicazioni GUI: swing
Package javax.swing
Differenze tra swing e awt
Le 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.
La prima finestra
Per 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.
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);
}
}
);
}
Uso di componenti
La 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.
Posizionamento e Layout
Per quanta riguarda i Layout non ci sono particolari differenze riguardo ad awt
se non che il Layout non avviene applicato alla JFrame, ma al Container
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();
c.setLayout(null); //Layout nullo
c.add(pulsante); //Aggiungiamo il pusante sulla Frame
pulsante.setBounds(100,100,100,50); //posizionato per coordinate
}
…..
}
JOptionPane
E’ 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
JScrollPane
In 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 JTextArea
Tale 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.
JList e JComboBox
A 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.
JTable
La 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.

More Related Content

More from Sergio Ronchi (20)

Java lezione 18
Java lezione 18Java lezione 18
Java lezione 18
 
Java lezione 17
Java lezione 17Java lezione 17
Java lezione 17
 
Java lezione 16
Java lezione 16Java lezione 16
Java lezione 16
 
Java lezione 14
Java lezione 14Java lezione 14
Java lezione 14
 
Java lezione 13
Java lezione 13Java lezione 13
Java lezione 13
 
Java lezione 10
Java lezione 10Java lezione 10
Java lezione 10
 
Java lezione 9
Java lezione 9Java lezione 9
Java lezione 9
 
Java lezione 8
Java lezione 8Java lezione 8
Java lezione 8
 
Java lezione 7
Java lezione 7Java lezione 7
Java lezione 7
 
Java lezione 6
Java lezione 6Java lezione 6
Java lezione 6
 
Java lezione 5
Java lezione 5Java lezione 5
Java lezione 5
 
Java lezione 4
Java lezione 4Java lezione 4
Java lezione 4
 
Java lezione 3
Java lezione 3Java lezione 3
Java lezione 3
 
Java lezione 2
Java lezione 2Java lezione 2
Java lezione 2
 
Java introduzione
Java introduzioneJava introduzione
Java introduzione
 
Java Lezione 1
Java Lezione 1Java Lezione 1
Java Lezione 1
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Oracle PLSql 4
Oracle PLSql 4Oracle PLSql 4
Oracle PLSql 4
 
Oracle PL sql 3
Oracle PL sql 3Oracle PL sql 3
Oracle PL sql 3
 
Oracle PL sql 2
Oracle PL sql 2Oracle PL sql 2
Oracle PL sql 2
 

Java lezione 12

  • 2. Differenze tra swing e awt Le 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.
  • 3. La prima finestra Per 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.
  • 4. 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); } } ); }
  • 5. Uso di componenti La 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.
  • 6. Posizionamento e Layout Per quanta riguarda i Layout non ci sono particolari differenze riguardo ad awt se non che il Layout non avviene applicato alla JFrame, ma al Container 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(); c.setLayout(null); //Layout nullo c.add(pulsante); //Aggiungiamo il pusante sulla Frame pulsante.setBounds(100,100,100,50); //posizionato per coordinate } ….. }
  • 7. JOptionPane E’ 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
  • 8. JScrollPane In 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 JTextArea Tale 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.
  • 9. JList e JComboBox A 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.
  • 10. JTable La 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.