[Guida] Java Incapsulamento e l'ereditarietà, GUI dalle Basi.3°

  1. #1
    Utente Esperto L'avatar di Eagle2
    Data Registrazione
    Aug 2013
    Messaggi
    228
    Incapsulamento e l'ereditarietà . vediamo gli ultimi concetti teorici di java !

    L' incapsulamento: Per incapsulamento si intenda la proprietà di un oggetto di incorporare al loro interno attributi e metodi. Quindi grazie a questo tutto ciò di cui avremo bisogno sara racchiuso all'interno della "capsula" (l'oggetto) .

    L'ereditarietà: L'ereditarietà è un altro concetto base di Java. E consiste nella possibilità di creare nuove classi "figlie" facendoli cosi acquisire stessi attributi, metodi della classe "madre" che potranno essere riutilizzati nella sottoclasse. Per fare questo si usa la parola chiave extends.
    ES:
    Codice:
    public class Figlia extends Madre{
         //.
    }

    Cominciamo ad introdurre e spiegare cosa sono le GUI (Graphic Unit Interface) .

    Le GUI ovvero interfacce grafiche sono componenti grafici che servono per l'input e l' output, questi componenti restituiscono risultati in base al' evento che ricevono. In java abbiamo due gui importanti la java.awt e la javax.swing per la creazione di componenti grafici invece per la gestione degli eventi useremo la java.awt.event .
    Cominciamo col definire i componenti principali di un interfaccia grafica :

    Frame o finestra: un frame o finestra è un contenitore all' interno della quale andremo a posizionare i vari componenti grafici, si dichiara in questo modo:
    Codice:
    Frame Finestra = new Frame();   per l' awt
    
    JFrame Finestra = new JFrame();  per la swing



    Layout: il layout ovvero la disposizione dei componenti al' interno della finestra è molto importante anche perché da questa scelta può dipendere il successo o meno dell' applicazione

    Label (etichette) : I label o etichette sono aree di testo che non hanno alcun evento associato. Per i Label abbiamo 3 diversi costruttori vediamo quali sono:
    Label Vuota = new Label(); costruttore senza parametri crea un etichetta vuota

    Label Nome = new Label(String); crea l' etichetta contenente come testo la stringa passata tramite parametro cioè tra le () il testo viene allineato automaticamente a sinistra all' interno dell' etichetta.

    Label Completa = new Label(String, int); tramite il parametro intero si indica la modalità di allineamento che si preferisce usando come valori le costanti statiche definite all'interno della classe Label e sono le seguenti:

    Label.LEFT Label.Right Label.CENTER


    vediamo in pratica:
    Codice:
    Label Vuota = new Label();     
    Label Nome = new Label("Prova");
    Label Completa = new Label("Prova", Label.CENTER); 
    
    JLabel Vuota = new JLabel();
    JLabel Nome = new JLabel("Prova");
    JLabel Completa = new JLabel("PROVA", CENTER); 
    


    I bottoni: possono essere etichettati con una Stringa o un immagine la maggior parte delle applicazioni associano ai bottoni le azione che un utente può svolgere . Un bottone si attiva nel momento in qui ci si clicca sopra o magari si passa il mouse su di esso ci sono vari eventi che verranno gestiti con gli Action Listener (ascoltatore di eventi).
    Codice:
    Button bottone = new Button();   
    
    JButton bottone = new JButton();   
    
    // tra le parentesi tonde ci sono i parametri che possiamo passare al bottone come il nome in questo modo: 
    
    JButton bottone = new JButton ("Bottone prova");
    
    Ogni bottone creato è attivo ciò significa che può essere cliccato e possibile però disattivar eun bottone utilizzando il metodo setEnabled(boolean);
    vediamo in pratica:
    Codice:
    bottone.setEnabled(false);



    Testo : i componenti che gestiscono l' inserimento del testo si distinguono in caselle di testo e in aree di testo .
    Le caselle di testo : sono formate da una cella in cui e possibile inserire solo una riga, e viene generalmente usata per chiedere al' utente l' inserimento di un numero o una stringa.
    Codice:
     
    TextField casella = new JTextField();
    
    JTextField casella = new JTextField();
    Le caselle di testo hanno 4 costruttori che permettono di impostare i due parametri in vari modi.
    vediamo quali sono:

    TextField testo = new TextField(); crea la casella e non specifica il contenuto.

    TextField testo = new TextField(String); crea la casella inizializzandola con un certo valore e la cui dimensione sara uguale alla lunghezza della stringa.

    TextField testo = new TextField(int); crea una casella vuota di dimensione specificata dal parametro. Questo tipo di casella viene usato per permettere all'utente l' inserimento di dati.

    TextField testo = new TextField(String, int); consente di impostare sia il contenuto della casella che la sua dimensione definita dal parametro intero.

    Le aree di testo: l' area di testo invece è formata da più linee e viene usata per inserire o mostrare testi particolarmente lunghi .
    Codice:
    TextArea areatesto = new TextArea();
    
    JTextArea areeatesto = new JTextArea();
    I Pannelli: I pannelli come le finestra sono altri contenitori . I pannelli in java sono rappresentati dalla classe Panel e vengono usati principalmente per raggruppare i componenti e inserirli in un altro contenitore. Si possono quindi costruire Panel (pannelli) da inserire all'interno del Frame oppure di altri Panel.
    Codice:
    Panel p = new Panel();
                                                // il costruttore di Panel nn ha parametri che dobbiamo passargli dentro le parentesi .
    
    JPanel p = new JPanel();
    Cominciamo con dei piccoli esempi come creare una finestra vuota e poi aggiungerci qualche elemento.

    Creare una finestra vuota in awt:
    Codice:
    import java.awt.*;                                                  //importiamo la libreria awt e con l' asterisco diciamo di voler importare tutti i componenti di quella libreria.
    public class Vuota{
        
        public static void main(String [] args){
            Frame f = new Frame("Finestra vuota" );     //dichiarazione della finestra e assegnazione del nome tra le ().
            f.setSize(350, 150);                                //f.setSize e un metodo che serve a dare le dimensioni alla finestra.
            f.setLocation(250, 100);                        // f.setLocation serve a definire la posizione dove deve generarsi sul desktop.
            f.setVisible(true);                               //metodo molto importante perché senza di esso la finestra non sarà visibile bisogna metterlo sempre alla fine dopo aver aggiunto tutti gli elementi.
        }
    }

    Creiamo la stessa finestra ma con la swing:
    Codice:
    import javax.swing.*;           //importiamo la libreria swing e con l' asterisco diciamo di voler importare tutti i componenti di quella libreria.
    public class Vuota{
        
        public static void main(String [] args){
            JFrame f = new JFrame("Finestra vuota" );            //dichiarazione della finestra e assegnazione del nome tra le ().
            f.setSize(350, 150);                                           //f.setSize e un metodo che serve a dare le dimensioni alla finestra.
            f.setLocation(250, 100);                                   // f.setLocation serve a definire la posizione dove deve generarsi sul desktop.
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                //questo metodo permette la chiusura della finestra e del processo direttamente premendo la X rossa. 
            f.setVisible(true);                                        //metodo molto importante perché senza di esso la finestra non sarà visibile bisogna metterlo sempre alla fine dopo aver aggiunto tutti gli elementi.
        }
    }

    come spesso vediamo alcune finestre sono ridimensionabili cioè che possiamo modificare le loro dimensioni agendo con il mouse lungo i bordi. Per negare questo ad un utente quindi rendere la finestra fissa non ridimensionabile esiste un metodo che è il seguente :
    Codice:
    f.setResizable(false);
    
    per fare l' inverso basterà mettere al posto della variabile booleana false true in questo modo :
    
    f.setResizable(true)
    Utilizzando l' esempio di prima andiamo ad inserire un Panel con lo sfondo rossoe nel Frame.
    Per inserire componenti all'interno del contenitore avremo bisogno del metodo add un metodo che può ricevere diversi parametri. Quindi vediamo come aggiungere il pannello alla finestra nell'esempio qui sopra.
    Esempio con l' awt :
    Codice:
    import java.awt.*;               //importiamo la libreria awt e con l' asterisco diciamo di voler importare tutti i componenti di quella libreria.
    public class Prova{
        
        public static void main(String [] args){
            Frame f = new Frame("Finestra vuota" );            
            Panel p = new Panel();                                       // creiamo il nuovo pannello 
            f.setSize(350, 150);                                        
            f.setLocation(250, 100);                               
            p.setBackground(Color.red);                           // questo metodo permette di impostare un colore di sfondo al pannello.
            f.add(p);                                                    //questo è il metodo add al quale passiamo come parametro tra () il nome del pannello cioè p .
            f.setVisible(true); 
        }
    }



    Chiudiamo anche questo post con un ultimo esempio nel quale utilizzeremo la finestra creata nell'esempio precedente per inserirci un bottone un una casella di testo.
    vediamo usando la libreria AWT:
    Codice:
    import java.awt.*; 
    public class Prova{
        
        public static void main(String [] args){
            Frame f = new Frame("Finestra vuota" ); 
            Panel p = new Panel();
            Button bottone = new Button("BOTTONE");                    //dichiarazione del bottone
            TextField testo = new TextField("Testo");                    //dichiarazione della casella di testo.
            TextArea area = new TextArea(10, 30);                     //dichiarazione dell'area di testo. Dove 10 e 30 formano l' area di testo avente 10 righe e larga 30 caratteri.
            f.setSize(350, 400); 
            f.setLocation(250, 100); 
            p.add(bottone);
            p.add(testo);                        //utilizziamo il metodo add per aggiungere al pannello i vari componenti.
            p.add(area);
            f.add(p); 
            f.setVisible(true); 
        }
    }


    vediamo usando la libreria swing:


    Codice:
    import javax.swing.*; 
    public class Prova{
        
        public static void main(String [] args){
            JFrame f = new JFrame("Finestra vuota" ); 
            JPanel p = new JPanel();
            JButton bottone = new JButton("BOTTONE");        //dichiarazione del bottone
            JTextField testo = new JTextField("Testo");         //dichiarazione della casella di testo.
            JTextArea area = new JTextArea(10, 30);          //dichiarazione dell'area di testo. Dove 10 e 30 formano l' area di testo avente 10 righe e larga 30 caratteri.
            f.setSize(350, 400); 
            f.setLocation(250, 100);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
            p.add(bottone);
            p.add(testo);            //utilizziamo il metodo add per aggiungere al pannello i vari componenti
            p.add(area);
            f.add(p); 
            f.setVisible(true); //metodo molto importante perché senza di esso la finestra non sarà visibile bisogna metterlo sempre alla fine dopo aver aggiunto tutti gli elementi.
        }
    }


    N.B : in questi due esempi finali il posizionamento dei componenti e casuale cioè sono stati posizionati automaticamente dal programma senza alcun layout o posizionamento assoluto.

    -------------------------------------------------------------------------------------------------------------------------------------

    Spero sia tutto chiaro nella prossima guida continueremo con esempi vedremo altri metodi utilizzabili per i vari componenti grafici e vedremo come gestire il Layout quindi il posizionamento dei componenti e vedremo anche come avviene la gestione degli evento.





  2. #2
    Come si fa a settare che la l'utente non può aumentare la dimensione del panel?
    [Guida] Java Incapsulamento e l'ereditarietà, GUI dalle Basi.3°

Termini piu ricercati:

Nessuno è atterrato su questa pagina da un motore di ricerca. Almeno, non per ora...