BorderLayout. 1 Gestori di Layout http://java.sun.com/docs/books/tutorial/uiswing/layout/visual.html (guida visuale)



Похожие документы
I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame("Finestra"); // crea frame invisibile

Programmazione Java: Interfacce grafiche (GUI)

Tutorial SWING-AWT: Il Layout Manager GridBagLayout Di Michele de Nittis

Le basi della grafica in Java. Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni

Alessandro De Luca. Lezione, 13 maggio 2015

Grafico della parabola

Corso Eclipse. Prerequisiti. 3 Window Builder

Introduzione al package grafico Swing

I Layout Manager di java. Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni

Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Polistena (RC)

Eventi di azione. // con interfaccia per eventi di azione

L interfaccia grafica con Java

Interfacce grafiche. Una GUI (Graphic User Interface) contiene vari componenti: bottoni, etichette, immagini...

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

L interfaccia grafica in Java

Tutorial di HTML basato su HTML 4.0 e CSS 2

Classi astratte. Master in Web Technology e Security luglio - settembre Interfacce

APPLICAZIONI & APPLET

Corso sul linguaggio Java

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

Microsoft Word. Nozioni di base

TECNOLOGIE APPLICAZIONI WEB Linguaggio Java: Le Applet

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie

NVU Manuale d uso. Cimini Simonelli Testa

ereditano direttamente da Component.

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali

HTML 6. I frame. Sintassi di base. I frame e DOCTYPE FRAME. ...head... <FRAMESET lista_attributi> <FRAME SRC= URL lista_attributi>

Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico)

Programmazione Orientata agli Oggetti in Linguaggio Java

Guida all uso di Java Diagrammi ER

STAMPA UNIONE DI WORD

1. Le macro in Access 2000/2003

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Sviluppo di Interfacce Grafiche in Java

[Tutoriale] Realizzare un cruciverba con Excel

Operazioni fondamentali

Corso di Archivistica

IMPOSTARE UNA MASCHERA CHE SI APRE AUTOMATICAMENTE

[Dimensionare la pagina-creare le tabelle-formattare le tabelle-formattare la pagina

Foglio Elettronico. Creare un nuovo foglio elettronico Menu File Nuovo 1 clic su Cartella di lavoro vuota nel riquadro attività

On-line Corsi d Informatica sul Web

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

Java GUI. Swing Java

Utilizzo di Blue s. Avvio di Blue s C A P I T O L O 7. Come avviare il programma e inserire la password

Come posso visualizzare la mia posta senza utilizzare programmi per la posta elettronica (es. Outlook Express, Outlook 2003, etc.)?

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel

CONTROLLO ORTOGRAFICO E GRAMMATICALE

Tale attività non è descritta in questa dispensa

LA GESTIONE DEI VEICOLI AZIENDALI CON MICROSOFT OUTLOOK

Cos è un word processor

Flow!Works Manuale d uso

Formattazione e Stampa

Tutorial sugli ambienti di sviluppo: Eclipse e NetBeans

CREARE UN JUKEBOX CON POWERPOINT

L amministratore di dominio

ISTITUTO DI ISTRUZIONE SUPERIORE STATALE M.K.GANDHI WORD Isabella Dozio 17 febbraio 2012

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Swing. Swing 1. Java e la grafica Java permette di realizzare agevolmente applicazioni grafiche Package java.awt

Workshop NOS Piacenza: progettare ed implementare ipermedia in classe. pag. 1

Java: la libreria delle classi

Realizzare una presentazione con PowerPoint

CdL in Medicina Veterinaria - STPA AA

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Il Programma... 3 I moduli... 3 Installazione... 3 La finestra di Login... 4 La suite dei programmi... 6 Pannello voci... 10

Guida all uso del portale per il software Bilancio di previsione 2012

MODULO 3. Microsoft Excel. TEST ED ESERCIZI SU:

Disegni di Ricerca e Analisi dei Dati in Psicologia Clinica. Rcmdr

GUIDA UTENTE MONEY TRANSFER MANAGER

Compito di laboratorio di informatica HTML

EasyPrint v4.15. Gadget e calendari. Manuale Utente

Gestione Rapporti (Calcolo Aree)

paragrafo. Testo Incorniciato Con bordo completo Testo Incorniciato Con bordo incompleto

Università di L Aquila Facoltà di Biotecnologie Agro-alimentari

[FINANZAECOMUNICAZIONE / VADEMECUM]

Gestire immagini e grafica con Word 2010

Esercitazione del Corso di Informatica Grafica. Strumenti per scrivere applicazioni in JAVA

Guida rapida alla gestione della webmail Collabra

per immagini guida avanzata Stampare i fogli di lavoro di Excel Geometra Luigi Amato Guida Avanzata per immagini excel

Esercitazione n. 10: HTML e primo sito web

Moduli (schede compilabili) in Word Esempio: scheda di alimentazione per un degente

Modulo 2 Uso del computer e gestione dei file

Guida di Keyboard Builder Sielco Sistemi Srl

APPUNTI POWER POINT (album foto)

Comandi di Excel. Tasti di scelta rapida da Barra delle Applicazioni MAIUSC+F12 CTRL+N. dall utente MAIUSC+F1 ALT+V+Z

Identificare le diverse parti di una finestra: barra del titolo, barra dei menu, barra degli strumenti, barra di stato, barra di scorrimento.

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera

CREARE UN NUOVO ARTICOLO

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

CATALOGO E-COMMERCE E NEGOZIO A GRIGLIA

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

DISPENSA PER MICROSOFT WORD 2010

Транскрипт:

Posizionamento diretto di un elemento GUI o tramite gestori di layout Nel posizionamento diretto (dipendente dalle impostazioni grafiche del sistema) non abbiamo bisogno di un gestore di layout (layout manager 1 ) e dobbiamo indicare questo fatto con l istruzione: setlayout (null); Definiremo poi le dimensioni dell elemento e lo posizioneremo mediante il metodo setbounds() con sintassi: setbounds(x,y,larghezza,altezza) // x,y dell angolo sup. sin. Per default il gestore di layout per tutti i contenitori di tipo pannello è un istanza della classe FlowLayout che aggiunge i componenti uno di seguito all altro da sinistra a destra (nello stesso ordine in cui vengono aggiunti col metodo add ): riempita la prima riga si inizia la seconda e così via. Abbiamo già fatto uso della classe GridLayout con costruttore GridLayout (numero righe, numero colonne) per posizionare i componenti nelle celle di una tabella tutte caratterizzate dalla stessa dimensione. Un altro costruttore permette di impostare anche la spaziatura verticale e quella orizzontale: GridLayout (num_righe, num_colonne, spaziatura_verticale, spaziatura_orizzontale) BorderLayout BorderLayout divide lo schermo in cinque regioni: North, East, West, South, Center. È, di default il gestore di layout per i contenitori ad alto livello come i Content Pane. BorderLayout assicura a North, South, East e West tanto spazio quanto richiedono, lo spazio rimanente viene assegnato a Center. BorderLayout può essere costruito con costruttore BorderLayout () oppure con BorderLayout (spaziatura_orizzontale, spaziatura_verticale) specificano lo spazio orizzontale e verticale tra due componenti. nb: nel package swing tali regioni vengono definite dalle costanti BorderLayout.PAGE_START, BorderLayout.LINE_START, BorderLayout.LINE_END, BorderLayout.PAGE_END e BorderLayout.CENTER rispettivamente per indicare in alto, a sinistra, a destra, in basso e centro. Oltre alle numerose classi che già awt introduceva per gestire il posizionamento, swing rende disponibile anche la classe BoxLayout per una scelta general purpose nell impilare i vari elementi. 1 Gestori di Layout http://java.sun.com/docs/books/tutorial/uiswing/layout/visual.html (guida visuale)

/******************************************************************/ /* GESTIONE DI UN LAYOUT SEMPLICE MEDIANTE USO DI SWING ****/ /******************************************************************/ import java.awt.*; public class SempliceLayout extends JFrame { //Creiamo i componenti JLabel iplabel = new JLabel("IP host", SwingConstants.LEFT); // per default a sinistra JLabel passwordlabel = new JLabel("Password", SwingConstants.LEFT); JLabel filedainviarelabel = new JLabel("File da inviare", SwingConstants.LEFT); JTextField iptext = new JTextField(20); // impostiamo numero caratteri JPasswordField passwordtext = new JPasswordField(20); // impostiamo numero caratteri JTextField filedainviaretext = new JTextField(20); // impostiamo numero caratteri JButton pulsante = new JButton("Inizia TX"); public SempliceLayout() { // costruttore dell'applicazione super("file transfer appz"); setsize(320, 150); // dimensioni adatte [*] setdefaultcloseoperation(exit_on_close); JPanel pannello = new JPanel(); // impostiamo le proprietà dei componenti iptext.seteditable(true); filedainviaretext.seteditable(true); passwordtext.setechochar('*'); // usiamo il Layout di default di JPanel di tipo FlowLayout pannello.add(iplabel); pannello.add(iptext); pannello.add(passwordlabel); pannello.add(passwordtext); pannello.add(filedainviarelabel); pannello.add(filedainviaretext); pannello.add(pulsante); setcontentpane(pannello); // rendiamo il pannello parte del nostro frame setresizable(false); // immodificabili dimensioni [*] setvisible(true); // visualizziamo il tutto public static void main(string argv[]) { new SempliceLayout();

/*****************************************************************************/ /* GESTIONE DI UN LAYOUT A GRIGLIA AVANZATA MEDIANTE USO DI SWING ****/ /*****************************************************************************/ import java.awt.*; public class Layout extends JFrame { //Creiamo i componenti JLabel iplabel = new JLabel("IP host", SwingConstants.LEFT); // per default a sinistra JLabel passwordlabel = new JLabel("Password", SwingConstants.LEFT); JLabel filedainviarelabel = new JLabel("File da inviare", SwingConstants.LEFT); JTextField iptext = new JTextField(); // non ci preoccupiamo di impostare numero caratteri JPasswordField passwordtext = new JPasswordField(); JTextField filedainviaretext = new JTextField(); JButton pulsante = new JButton("Inizia TX"); // Definiamo un metodo che ci servirà per definire i limiti di layout void impostalimite(gridbagconstraints gbc, int gx, int gy, int gw, int gh, int wx, int wy) { gbc.gridx = gx; gbc.gridy = gy; gbc.gridwidth = gw; gbc.gridheight = gh; gbc.weightx = wx; gbc.weighty = wy; public Layout() { // costruttore dell'applicazione super("file transfer appz"); setsize(300, 120); setdefaultcloseoperation(exit_on_close); JPanel pannello = new JPanel(); // impostiamo le proprietà dei componenti iptext.seteditable(true); filedainviaretext.seteditable(true); passwordtext.setechochar('*'); //definiamo il gestore di layout GridBagLayout grigliaavanzata = new GridBagLayout(); // griglia personalizzata GridBagConstraints limite = new GridBagConstraints(); pannello.setlayout(grigliaavanzata); //definiamo i limiti di ogni componente e lo aggiungiamo al pannello impostalimite(limite,0,0,1,1,35,0); //etichetta IP host limite.fill = GridBagConstraints.NONE; limite.anchor = GridBagConstraints.EAST; grigliaavanzata.setconstraints(iplabel,limite); pannello.add(iplabel); impostalimite(limite,1,0,1,1,65,100); //campo IP host limite.fill = GridBagConstraints.HORIZONTAL; grigliaavanzata.setconstraints(iptext,limite); pannello.add(iptext);

impostalimite(limite,0,1,1,1,0,0); //etichetta password limite.fill = GridBagConstraints.NONE; limite.anchor = GridBagConstraints.EAST; grigliaavanzata.setconstraints(passwordlabel,limite); pannello.add(passwordlabel); impostalimite(limite,1,1,1,1,0,100); //campo password limite.fill = GridBagConstraints.HORIZONTAL; grigliaavanzata.setconstraints(passwordtext,limite); pannello.add(passwordtext); impostalimite(limite,0,2,1,1,0,0); //etichetta File da inviare limite.fill = GridBagConstraints.NONE; limite.anchor = GridBagConstraints.EAST; grigliaavanzata.setconstraints(filedainviarelabel,limite); pannello.add(filedainviarelabel); impostalimite(limite,1,2,1,1,0,100); //campo File da inviare limite.fill = GridBagConstraints.HORIZONTAL; grigliaavanzata.setconstraints(filedainviaretext,limite); pannello.add(filedainviaretext); impostalimite(limite,0,3,2,1,0,50); // Pulsante limite.fill = GridBagConstraints.NONE; limite.anchor = GridBagConstraints.CENTER; grigliaavanzata.setconstraints(pulsante,limite); pannello.add(pulsante); setcontentpane(pannello); // rendiamo il pannello parte del nostro frame setvisible(true); // Visualizziamo il tutto! public static void main(string argv[]) { Layout nf = new Layout(); GridBagLayout può organizzare interfacce grafiche complesse rendendo possibile dividere il container in una griglia e, a differenza del GridLayout, può disporre i suoi componenti in modo tale che si estendano anche oltre un unica cella, attraverso la classe GridBagConstraints.

/******************************************************************************/ /* SEMPLICI ETICHETTE, CAMPI ED AREE DI TESTO MEDIANTE USO DI SWING ****/ /******************************************************************************/ import java.awt.gridlayout; public class EtichetteEcampi extends JFrame { JLabel etichetta1 = new JLabel("Allineamento a sinistra ",SwingConstants.LEFT); JLabel etichetta2 = new JLabel("Allineamento al centro",swingconstants.center); JLabel etichetta3 = new JLabel("Allineamento a destra ", SwingConstants.RIGHT); JTextField campoditesto = new JTextField("Immetti qui una stringa...",30); JTextArea areaditesto = new JTextArea("Questa é un'area di testo di\n5 righe e 30 colonne",5,30); public EtichetteEcampi() { super("etichette e campi"); setsize(350, 300); setdefaultcloseoperation(exit_on_close); JPanel pannello = new JPanel(); // impostiamo le proprietà dei componenti campoditesto.seteditable(true); areaditesto.setlinewrap(true); areaditesto.setwrapstyleword(true); // ora aggiungiamo i componenti al pannello pannello.setlayout(new GridLayout(0,1)); pannello.add(etichetta1); pannello.add(etichetta2); pannello.add(etichetta3); pannello.add(campoditesto); pannello.add(areaditesto); // rendiamo il pannello parte del nostro frame setcontentpane(pannello); setvisible(true); // Visualizziamo il tutto! public static void main(string argv[]) { EtichetteEcampi ec = new EtichetteEcampi(); nb: public GridLayout (int rows, int cols) crea un layout a griglia dove tutti i componenti sono delle stesse dimensioni. Uno tra numero rige e colonne - ma non entrtambi - può essere zero: significa che un qualsiasi numero di oggetti può essere inserito o nell'unica riga o nell'unica colonna // da http://www.java2s.com/code/javaapi/javax.swing/swingconstantsright.htm

import java.awt.color; import java.awt.gridlayout; import javax.swing.borderfactory; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.swingconstants; Etichette e bordi public class EtichetteBordi { private JLabel label1, label2,label3; private JFrame frame; private JPanel p; public EtichetteBordi(){ label1 = new JLabel("BottomRight", SwingConstants.RIGHT); label2 = new JLabel("CenterLeft", SwingConstants.LEFT); label3 = new JLabel("TopCenter", SwingConstants.CENTER); label1.setverticalalignment(swingconstants.bottom); label2.setverticalalignment(swingconstants.center); label3.setverticalalignment(swingconstants.top); label1.setborder(borderfactory.createlineborder(color.black)); label2.setborder(borderfactory.createlineborder(color.black)); label3.setborder(borderfactory.createlineborder(color.black)); frame = new JFrame("AlignmentExample"); frame.setdefaultcloseoperation(jframe.exit_on_close); p = new JPanel(new GridLayout(3, 1, 0, 8)); // righe, colonne, pixel tra colonne, pixel tra righe // in questa applicazione, con unica colonna, // è indifferente hgap che pùò valere anche 0 p.add(label1); p.add(label2); p.add(label3); p.setborder(borderfactory.createemptyborder(8, 8, 8, 8)); // top, left, bottom, right frame.setcontentpane(p); frame.setsize(300, 200); frame.setvisible(true); public static void main(string[] args) { new EtichetteBordi(); nb: public GridLayout (int rows, int cols, int hgap, int vgap) crea un layout a griglia dove tutti i componenti sono delle stesse dimensioni e rende possibile impostare il numero di pixel tra le colonne come per il margine destro e sinistro dai bordi (horizontal gap) ed il numero di pixel tra le righe come per i margini in alto e basso dai bordi (vertical gap).

/** * @(#)Gui.java * Gui application * @author 3AI * @version 1.00 2009/4/4 */ import java.awt.*; class MioPanel extends JPanel{ public MioPanel(){ this.setpreferredsize(new Dimension(180, 150)); // per reimpostare dinamicamente public void paintcomponent(graphics g){ super.paintcomponent(g); g.setcolor(color.red); g.fillrect(20,20, 100,80); g.setcolor(color.blue); g.drawrect(30,30, 80,60); g.setcolor(color.black); g.drawstring("ciao",50,60); class Bottone extends JPanel{ private JButton b; public Bottone(){ b = new JButton("label del bottone"); b.setbackground(color.white); b. setpreferredsize(new Dimension(130, 15)); this.add(b); // oggetto corrente public class Gui { private JFrame f; private Container c; private MioPanel p; // pannelli personalizzati private Bottone p2; public Gui(){ f = new JFrame("Due pannelli"); // crea un nuovo JFrame Inizialmente invisibile con titolo c = f.getcontentpane(); // recupera il "muro grezzo" p = new MioPanel(); // crea pannello personalizzato adattabile alle dimensioni della finestra p2 = new Bottone(); // crea altro pannello personalizzato adattabile alle dimensioni di bottone e finestra p2.setbackground(color.blue); c.setlayout(new BorderLayout()); // scelta di Layout che distingue tra alto, basso, destra, sinistra e centro c.add(p,borderlayout.center); // al centro il pannello con disegno c.add(p2,borderlayout.page_end); // in basso il bottone (per retrocompatibiltà anche SOUTH) f.pack(); // ottimizza le dimensioni della finestra f.setlocation(400,150); f.setvisible(true); // mostra il JFrame f.setdefaultcloseoperation (JFrame.EXIT_ON_CLOSE); public static void main(string[] v){ Gui gui = new Gui();

// Lo stesso esempio di Applicazione con uso GUI già usato per introdurre componenti GUI // in un pannello. Posizionamento tramite gestori di layout: impilando in verticale import java.awt.*; public class Gui2 { private JFrame f ; private Container c; private JPanel p; private JLabel l; private JButton b1, b2; private JTextField t1, t2; private JTextArea a1, a2, a3; private JScrollPane sp; private JCheckBox c1, c2, c3: private ButtonGroup g; private JRadioButton rb1, rb2; // con barre a scorrimento inserendo JTextArea in JScrollPane // per creare pulsanti di opzione (uno solo selezionabile) detti Radio Button public Gui2 () { // costruttore f = new JFrame("Finestra con componenti"); // crea frame invisibile // per impostare le dimensioni e la posizione: f.setsize(450,330); // misure in pixel f.setlocation(200,100); // (0,0) angolo sup. sin. f.setresizable(true); // per ridimensionare con mouse c = f.getcontentpane(); // recupera il "muro grezzo" p = new JPanel(); p.setbackground (Color.lightGray); // sfondo colorato p.setlayout (new BoxLayout (p, BoxLayout.PAGE_AXIS)); // impila gli elementi in verticale nel pannello l = new JLabel ("Etichetta"); b1 = new JButton (); b2 = new JButton ("Bottone"); b1.setbackground (Color.cyan); b1.settext("bottone con etichetta"); // imposta il valore dell etichetta ( deprecato setlabel (testo) ) t1 = new JTextField (30); t2 = new JTextField ("immetti il nome", 20); a1 = new JTextArea(5, 20); a1.append("dimensionata con 5 righe e 20 colonne"); a2 = new JTextArea("immetti una lista di nomi ", 5, 20); a3 = new JTextArea("immetti un commento personale ", 2, 15); sp = new JScrollPane(a3); // per vedere barre a scorrimento in JTextArea c1 = new JCheckBox(); c2 = new JCheckBox("Testo"); c3 = new JCheckBox("Testo attivato", true); c1.settooltiptext("senza testo"); // per visualizzare, al passaggio del mouse, testo esplicativo // Per creare pulsanti di opzione (uno solo selezionabile) detti Radio Button g = new ButtonGroup(); // per gestire selezione rb1 = new JRadioButton("Lingua Francese", false); rb2 = new JRadioButton("Lingua Francese", true); g.add(rb1); g.add(rb2); p.add(l); // aggiunge al pannello un'etichetta con testo p.add(b1); // aggiunge al pannello un bottone colorato con etichetta p.add(b2); // aggiunge al pannello un bottone con testo p.add(t1); // aggiunge al pannello un campo di testo con ampiezza specificata p.add(t2); // aggiunge al pannello un campo di testo con inizializzazione ed ampiezza specificata p.add(a1); // aggiunge al pannello un' area di testo con Righe e Colonne specificate p.add(a2); // aggiunge al pannello un'area di testo con inizializzazione e Righe e Colonne specificate p.add(sp); // aggiunge al pannello un Pannello a scorrimento che contiene // un'area di testo con inizializzazione e Righe e Colonne ridotte per visualizzare barre a scorrimento p.add(c1); // aggiunge al pannello una casella di controllo vuota e disattivata

p.add(c2); // aggiunge al pannello una casella di controllo con stringa p.add(c3); // aggiunge al pannello una casella di controllo con stringa ed attivata p.add(rb1); // aggiunge al pannello i Radio Button p.add(rb2); c.add(p); // aggiunge il pannello f.setvisible(true); // mostra il frame (dimensioni 400x400) f.setdefaultcloseoperation ( JFrame.EXIT_ON_CLOSE); public static void main(string [] args) { Gui2 o = new Gui2(); nb: per impilare in orizzontale BoxLayout (nomecontenitore, BoxLayout.LINE_AXIS) Impilando gli elementi in verticale nel pannello Impostando 6 Righe e 2 colonne (con solo 12 componenti) Default: un componente dopo l altro

Applet e disposizione di componenti in altra finestra Lo stesso modo di introdurre componenti GUI si può realizzare con Applet o piuttosto JApplet se si usano JComponent. Vediamo un esempio che crea una finestra diversa da quella del browser (confrontare con l applicazione Gui): // esempio di JApplet con uso dei componenti di una GUI (chiusura finestra browser per uscire) import java.awt.*; import java.applet.*; public class GuiA extends JApplet { public void init() { JFrame f = new JFrame("Finestra con componenti"); // crea frame invisibile f.setsize(300,150); f.setlocation(200,100); // misure in pixel per impostare le dimensioni // e la posizione con (0,0) angolo sup. sin. f.setresizable(true); // per ridimensionare con mouse Container c = f.getcontentpane(); // recupera il "muro grezzo" JPanel p = new JPanel(); p.setbackground (Color.gray); // sfondo colorato p.setlayout(new GridLayout(4,4)); // per evidenziare allineamento JLabel l1 = new JLabel ("Etichetta con sfondo colorato"); JLabel l2 = new JLabel ("Allineata al centro", JLabel.CENTER); JLabel l3 = new JLabel ("Allineata a sinistra", JLabel.LEFT); JLabel l4 = new JLabel ("Allineata a destra", JLabel.RIGHT); l1.setbackground (Color.cyan); l1.setopaque(true); // vedere sfondo su sfondo p.add(l2); // aggiunge al pannello un'etichetta allineata al centro p.add(l3); // aggiunge al pannello un'etichetta allineata a sinistra p.add(l4); // aggiunge al pannello un'etichetta allineata a destra p.add(l1); // aggiunge al pannello un'etichetta con sfondo colorato c.add(p); // aggiunge al frame il pannello colorato f.setvisible(true); // mostra il frame (dimensioni 300x150) // NB: si noti come per ragioni di sicurezza sia proibito l uso di // f.setdefaultcloseoperation (JFrame.EXIT_ON_CLOSE); Nel codice HTML: <object code ="GuiA.class" width= "300" height= "0"></object> le dimensioni obbligatorie pur se nulle, qui sono scelte in modo da permettere di leggere completamente, eseguendo in ambiente JCreator, il titolo della cornice del visualizzatore della Java Applet Window con messaggio di Applet avviato o non avviato.

NB: Un applet dunque può aprire un'altra finestra ma compare automaticamente un avviso anche solo come piccola icona di allerta in alto a sinistra della nuova finestra che ricorda come la Java Applet Window non sia mai completamente invisibile. nb: per eseguire la pagina html con opzione Run in JCreator, salvare tale pagina web nella stessa cartella del bytecode (classes). Si noti che,scegliendo come progetto Basic Java Applet si crea nella sottocartella classes la seguente pagina <html> <head> </head> <body bgcolor="000000"> <center><applet code = "NomeClasse.class" width = "500" height = "300" > </applet> </center> </body> </html> con uso di attributo sconsigliato bgcolor e tag obsoleto <applet></applet> nb: per eseguire la pagina html con programma appletviewer, inserito come tools in JCreator, impostare come opzioni: Esercizio: Creare un applet che disegni il cruscotto di un automobile in una finestra separata. Nel cruscotto devono apparire 4 bottoni con testo: Freccia Sx, Freccia Dx, Freno Manuale, Avvia Motore un etichetta con testo Luci con associate 3 caselle opzione (esclusiva) con testo posizioni, anabbaglianti, abbaglianti, tutte non attivate un etichetta carburante un JTextField largo 30 pixel 150 pixel 570 pixel

Soluzione: // esempio di JApplet con uso contenitori e componenti GUI del package swing import java.awt.*; import java.applet.*; public class Cruscotto extends JApplet { public void init() { JFrame f = new JFrame ("Cruscotto di un auto"); f.setsize (570, 150); f.setlocation (100,100); f.setresizable(true); // con mouse ridimensionabile Container c = f.getcontentpane(); // recupera il "muro grezzo" ButtonGroup luci = new ButtonGroup(); JRadioButton rb1 = new JRadioButton("posizioni", false); JRadioButton rb2 = new JRadioButton("anabbaglianti", false); JRadioButton rb3 = new JRadioButton("abbaglianti", false); luci.add(rb1); luci.add(rb2); JButton FrecciaSx = new JButton ("Freccia Sx"); JButton FrecciaDx = new JButton ("Freccia Dx"); JButton FrenoManuale = new JButton ("Freno Manuale"); JButton AvviaMotore = new JButton ("Avvia Motore"); JTextField carburante = new JTextField (30); c.setlayout (new GridLayout (3,4,10,10)); c.add(frecciasx); c.add(frecciadx); c.add(avviamotore); c.add(frenomanuale); c.add(new Label("Luci")); c.add(rb1); c.add(rb2); c.add(rb3); c.add(new Label("Carburante")); c.add(carburante); f.setvisible(true); Nel codice HTML <object code ="Cruscotto.class" width= "0" height= "0"></object>