Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 15 su 15
  1. #11
    Scusa, non mi ero accorto di avere un messaggio privato, ora ti rispondo!

    Provo a cambiare il codice e poi ti dico, grazie mille!!
    Gato

  2. #12
    Ho dovuto fare altri lavori nel frattempo (ed una piccola ricerca sui JComboBox, che conoscevo ma non avevo mai usato prima) ma alla fine ho cambiato il
    codice:
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.event.ActionListener;
    
    public class Screen2 extends JFrame {
    	private static final long serialVersionUID = 1L;
    
    // Creazione dei componenti
        JButton annullaButton;
        JButton fineButton;
        JPanel pannello;
        Container contentPane;
    
    
    	public Screen2() {
    	  super("Screen2");
    
    	  setSize(450, 315);
    
    	  setDefaultCloseOperation(EXIT_ON_CLOSE);
           setDefaultLookAndFeelDecorated(true);
    
    	  contentPane = getContentPane();
    
    	//Due colonne e dodici righe:
            contentPane.setLayout(new GridLayout(12,2));
    
    
    //.....qui istanzi i componenti e li assegni alle variabili di istanza.....
    
    	JLabel lNome = new JLabel("Nome:");
    	contentPane.add(lNome);
    	JTextField tNome = new JTextField("Inserisci il nome");
    	contentPane.add(tNome);
    	JLabel lCognome = new JLabel("Cognome:");
    	contentPane.add(lCognome);
    	JTextField tCognome = new JTextField("Inserisci il cognome");
    	contentPane.add(tCognome);
    	JLabel lIndirizzo = new JLabel("Indirizzo:");
    	contentPane.add(lIndirizzo);
    	JTextField tIndirizzo = new JTextField("Inserisci l'indirizzo");
    	contentPane.add(tIndirizzo);
    	JLabel lRuolo = new JLabel("Ruolo:");
    	contentPane.add(lRuolo);
    
    	JComboBox tRuolo = new JComboBox();
    	  tRuolo.addItem("Programmatore");
    	  tRuolo.addItem("TeamLeader");
    	  tRuolo.addItem("Contabile");
    	  tRuolo.addItem("Amministratore");
    		contentPane.add(tRuolo);
    
    	JLabel lMatricola = new JLabel("Matricola:");
    	contentPane.add(lMatricola);
    	JTextField tMatricola = new JTextField("Inserisci la matricola");
    	contentPane.add(tMatricola);
    	JLabel lPagBase = new JLabel("Paga base:");
    	contentPane.add(lPagBase);
    	JTextField tPagBase = new JTextField("Inserisci la paga base");
    	contentPane.add(tPagBase);
    	JLabel lPagOraria = new JLabel("Paga oraria attuale:");
    	contentPane.add(lPagOraria);
    	JTextField tPagOraria = new JTextField("Inserisci la paga oraria attuale");
    	contentPane.add(tPagOraria);
    	JLabel lOreLavoro = new JLabel("Ore lavorative giornaliere:");
    	contentPane.add(lOreLavoro);
    	JTextField tOreLavoro = new JTextField("Inserisci le ore lavorative giornaliere");
    	contentPane.add(tOreLavoro);
    	JLabel lSede = new JLabel("Sede:");
    	contentPane.add(lSede);
    	JTextField tSede = new JTextField("Inserisci la sede dell'ufficio");
    	contentPane.add(tSede);
    	JLabel lNumDipendenti = new JLabel("Numero dipendenti:");
    	contentPane.add(lNumDipendenti);
    	JTextField tNumDipendenti = new JTextField("Inserisci il numero dei dipendenti");
    	contentPane.add(tNumDipendenti);
    	JLabel lModifica = new JLabel("Tipo di modifica:");
    	contentPane.add(lModifica);
    
    	JComboBox theOptions = new JComboBox();
    	  theOptions.addItem("Aggiungi dipendente");
    	  theOptions.addItem("Aggiorna dipendente");
    	  theOptions.addItem("Annulla dipendente");
    		contentPane.add(theOptions);
    
    //Aggiungo i JButton (con i nomi)
    	JButton fineButton = new JButton("Fine");
    	contentPane.add(fineButton);
    
    	JButton annullaButton = new JButton("Annulla");
    	contentPane.add(annullaButton);
    
    
    //   Settaggio testo
    		tNome.setEditable(true);
    		tCognome.setEditable(true);
    		tIndirizzo.setEditable(true);
    		tRuolo.setEditable(true);
    		tMatricola.setEditable(true);
    		tPagBase.setEditable(true);
    		tPagOraria.setEditable(true);
    		tOreLavoro.setEditable(true);
    		tSede.setEditable(true);
    		tNumDipendenti.setEditable(true);
    
    	//ActionListener(s) da implementare dopo questa classe
    	Receiver1 receiver1 = new Receiver1();
    	Receiver2 receiver2 = new Receiver2();
    
    	//	assegnazione ActionListener(s) ai corrispondenti JButton(s)   assegnazione ActionListener(s) ai corrispondenti JButton(s)
    	fineButton.addActionListener(receiver1);
    	annullaButton.addActionListener(receiver2);
    
    	}
    
    
        class Receiver1 implements ActionListener {
    	public void actionPerformed(ActionEvent e) {
    
    
    		}
    	}
    
        class Receiver2 implements ActionListener {
    	public void actionPerformed(ActionEvent e) {
    
    			System.exit(0);
    		}
    	}
    
        public static void main(String[] args) {
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new Screen2().setVisible(true);
                }
            });
        }
    }
    È indentato meglio il codice?
    Mi sa che ho posizionato male la scelta del LookAndFeel, perchè non funziona...

    Scusa la mia enorme ignoranza, ma cosa intendevi con:
    //Aggiungo i JButton (con i nomi)
    // Qui stai definendo variabili locali, non stai assegnando ai campi di istanza
    JButton fineButton = new JButton("Fine");
    contentPane.add(fineButton);

    JButton annullaButton = new JButton("Annulla");
    contentPane.add(annullaButton);

    .........
    ?
    Gato

  3. #13
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fpertegato
    È indentato meglio il codice?
    Ehm ... no mi spiace, non ancora bene. Deve essere tutto ben allineato verticalmente se è allo stesso "livello" di annidamento.

    Il punto poi è che nel codice postato ci sono dei caratteri di "tab" (tabulazione). Io personalmente configuro sempre l'editor per scrivere spazi al posto dei tab.

    Originariamente inviato da fpertegato
    Mi sa che ho posizionato male la scelta del LookAndFeel, perchè non funziona...
    Innanzitutto con

    setDefaultLookAndFeelDecorated(true);

    non stai scegliendo un "look and feel".

    setDefaultLookAndFeelDecorated è "statico" e indica un "suggerimento" affinché le prossime nuove finestre JFrame abbiano le "decorazioni" fornite dal L&F (invece che dal window manager/S.O.).

    Ma come ho appena detto è una impostazione per i nuovi JFrame istanziati in seguito. Il punto è che facendolo nel costruttore .... il JFrame è già stato istanziato!

    Quindi o lo fai davvero "prima" (ad esempio nel main all'inizio), oppure come dice la documentazione puoi fare l'equivalente per un JFrame specifico con:

    frame.setUndecorated(true);
    frame.getRootPane().setWindowDecorationStyle(JRoot Pane.FRAME);

    Nel tuo caso, all'interno del costruttore, il 'frame' sarebbe il 'this', che quindi puoi omettere.

    E nota: va fatto prima che il JFrame diventi "displayable" (ovvero prima di un pack() o setVisible(true) )

    Originariamente inviato da fpertegato
    Scusa la mia enorme ignoranza, ma cosa intendevi con:

    //Aggiungo i JButton (con i nomi)
    // Qui stai definendo variabili locali, non stai assegnando ai campi di istanza
    JButton fineButton = new JButton("Fine");
    contentPane.add(fineButton);

    JButton annullaButton = new JButton("Annulla");
    contentPane.add(annullaButton);
    ?
    Intendevo che

    codice:
    public class Screen2 extends JFrame {
        JButton fineButton;
    
        public Screen2() {
            ....
            
            JButton fineButton = new JButton("Fine");
        }
    Qui hai 2 variabili chiamate "fineButton". Una "di istanza" (è un campo della classe), un'altra "locale" nel costruttore. La assegnazione in rosso assegna ovviamente alla variabile locale.
    Non a quella di istanza che rimane quindi a null (e quindi se la usassi es. da un listener ..... bang, NullPointerException)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #14
    Qui hai 2 variabili chiamate "fineButton". Una "di istanza" (è un campo della classe), un'altra "locale" nel costruttore. La assegnazione in rosso assegna ovviamente alla variabile locale.
    Non a quella di istanza che rimane quindi a null (e quindi se la usassi es. da un listener ..... bang, NullPointerException)
    Quindi dovrei togliere la definizione all'inizio giusto(sia di fineButton che di annullaButton)?
    Ma allora perchè "annullaButton" mi funziona?
    codice:
     */
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.event.ActionListener;
    
    public class Screen2 extends JFrame {
        private static final long serialVersionUID = 1L;
    
    // Creazione dei componenti
        JButton annullaButton;  //<---Questo e
        JButton fineButton;      //<-----questo
        JPanel pannello;
        Container contentPane;
    
           public Screen2() {
    Gato

  5. #15
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fpertegato
    Quindi dovrei togliere la definizione all'inizio giusto(sia di fineButton che di annullaButton)?
    Se non ti servono sì. Dovresti tenere quei reference come variabili "di istanza" solo se ti servono altrove oltre al costruttore (ad esempio nel codice di un listener, che viene eseguito di certo dopo la costruzione).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.