Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    64

    Java JDialog

    Ciao a tutti ho un problema con una finestra che ho realizzato...su questa finestra c' è un pulsante e vorrei che quando questo viene premuto appaia una finestra di dialogo.
    Per fare questo ho usato una JDialog ma tra i parametri che gli devo passare c' è anche la "finestra principale" a cui devo ritornare dopo che questa la finestra di dialogo si chiude si chiude... non riesco però a passargli questo parametro che si trova nel mio main...qualcuno sa come posso fare????....Riporto il codice che ho usato per il main...
    codice:
     	
    
    public static void main(String arg[]){
    		
    		JFrame f = new JFrame("Orari");
    		Container c= f.getContentPane();
    		finestra fin = new finestra();
    		c.add(fin);
    		f.addWindowListener(new Ascoltatore());
    		f.setSize(410,390);
    		f.setLocation(400,250);
    		f.show();
    
    		
    		}

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    64

    risposta

    Il link l'ho visto ma non mi è servito a molto...

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    64

    aggiunta

    Mi sono dimenticato di dire che "finestra" è il costrutture della mia classe per realizzare questa interfaccia

  4. #4
    Forse sarebbe utile vedere anche il resto del codice, o almeno le parti inerenti al problema così da capire meglio se è possibile!

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    64

    risp

    codice:
    public class finestra extends JPanel implements ItemListener{
    
    ...
    JButton cambia;
    
    public finestra(){
    		
    		super();
                    ...
                    cambia=new JButton(" MODIFICA ");
                    cambia.addActionListener(new pulsante());
                    add(cambia);
                  }
    
    	class pulsante implements ActionListener{
    		
    		public void actionPerformed (ActionEvent e){
    			
    		Object PulsantePremuto = e.getSource();
    
                    if((PulsantePremuto==cambia){
    
    	JOptionPane myoption = new JOptionPane ("messaggio",
            JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION); 
    	JDialog mydialog = myoption.createDialog(f,"titolo");
    	mydialog.pack();
            mydialog.show();
    
    
                   }
    
                  }
                }
    
    	public static void main(String arg[]){
    		
    		JFrame f = new JFrame("Orari");
    		Container c= f.getContentPane();
    		finestra fin = new finestra();
    		c.add(fin);
    		f.addWindowListener(new Ascoltatore());
    		f.setSize(410,330);
    		f.setLocation(400,250);
    		f.show();
    
    		
    		}
               }
    Ho cercato di darti le parti salienti del codice... mi pare che ci sia tutto fondamentalmente...il problema è che il compilatore mi dà un errore dicendo che non riconosce f come frame nella JDialog...e non so come passarglielo..

  6. #6
    Non hai provato a passare f al costruttore?

    codice:
    public class finestra extends JPanel implements ItemListener{
    
    ...
    JButton cambia;
    
    public finestra(JFrame f){ 
    		
    		super();
                    ...
                    cambia=new JButton(" MODIFICA ");
                    cambia.addActionListener(new pulsante());
                    add(cambia);
                  }
    
    	class pulsante implements ActionListener{
    		
    		public void actionPerformed (ActionEvent e){
    			
    		Object PulsantePremuto = e.getSource();
    
                    if((PulsantePremuto==cambia){
    
    	JOptionPane myoption = new JOptionPane ("messaggio",
            JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION); 
    	JDialog mydialog = myoption.createDialog(f,"titolo");
    	mydialog.pack();
            mydialog.show();
    
    
                   }
    
                  }
                }
    
    	public static void main(String arg[]){
    		
    		JFrame f = new JFrame("Orari");
    		Container c= f.getContentPane();
    		finestra fin = new finestra(f); 
    		c.add(fin);
    		f.addWindowListener(new Ascoltatore());
    		f.setSize(410,330);
    		f.setLocation(400,250);
    		f.show();
    
    		
    		}
               }
    Magari in questo modo riesci a risolvere il problema, oppure potresti portare la dichiarazione di f fuori dal main, cioè renderla generale, ad esempio:

    codice:
    Nella classe:
        JFrame f;
    
    Nel main:
       f = new JFrame("Orari");
    Prova a vedere se con uno di questi due metodo riesci a risolvere il tuo problema (nel secondo metodo ho dato per scontato che il main e la parte della JDialog si trovano nella stessa classe, altrimenti non va bene).

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    64

    risp

    ottimo ho fatto cosi...
    codice:
    public class finestra extends JPanel implements ItemListener,ActionListener{
    
    ...
    JButton cambia;
    JFrame f;
    
    public finestra(){ 
    		
    		super();
                    ...
                    cambia=new JButton(" MODIFICA ");
                    cambia.addActionListener(this);
                    add(cambia);
                  }
    
    	
    		
    		public void actionPerformed (ActionEvent e){
    			
    		Object PulsantePremuto = e.getSource();
    
                    if((PulsantePremuto==cambia){
    
    	JOptionPane myoption = new JOptionPane ("messaggio",
            JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION); 
    	JDialog mydialog = myoption.createDialog(f,"titolo");
    	mydialog.pack();
            mydialog.show();
    
    
                   }
    
                  }
                
    
    	public static void main(String arg[]){
    		
    		JFrame f = new JFrame("Orari");
    		Container c= f.getContentPane();
    		finestra fin = new finestra(f); 
    		c.add(fin);
    		f.addWindowListener(new Ascoltatore());
    		f.setSize(410,330);
    		f.setLocation(400,250);
    		f.show();
    
    		
    		}
               }
    ....cosi va perfettamente..grazie ancora

  8. #8
    Ma vedendo quello che hai fatto mi viene un dubbio...il costruttore finestra e il main sono in 2 classi diverse o nella stessa?

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    64

    risp

    Sono nella stessa infatti... il problema riguardava la classe pulsante che implementava il metodo ActionListener e che non vedeva il frame...per questo l'fo tolta e l'ho inglobata dentro finestra...spero di essermi spiegato....

  10. #10

    Re: risp

    Si ti sei spiegato benissimo però in questo caso mi sembra che hai messo una cosa inutile, se dichiari f all'inizio della classe poi non serve che la dichiari anche nel main e non serve che nel main la passi al costruttore, ti ho evidenziato qui sotto le cose che mi sembrano inutili!

    codice:
    public class finestra extends JPanel implements ItemListener,ActionListener{
    
    ...
    JButton cambia;
    static  JFrame f;
    
    public finestra(){ 
    		
    		super();
                    ...
                    cambia=new JButton(" MODIFICA ");
                    cambia.addActionListener(this);
                    add(cambia);
                  }
    
    	
    		
    		public void actionPerformed (ActionEvent e){
    			
    		Object PulsantePremuto = e.getSource();
    
                    if((PulsantePremuto==cambia){
    
    	JOptionPane myoption = new JOptionPane ("messaggio",
            JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION); 
    	JDialog mydialog = myoption.createDialog(f,"titolo");
    	mydialog.pack();
            mydialog.show();
    
    
                   }
    
                  }
                
    
    	public static void main(String arg[]){
    		
    		JFrame  f = new JFrame("Orari");
    		Container c= f.getContentPane();
    		finestra fin = new finestra(f ); 
    		c.add(fin);
    		f.addWindowListener(new Ascoltatore());
    		f.setSize(410,330);
    		f.setLocation(400,250);
    		f.show();
    
    		
    		}
               }
    Visto che usi f nel main che è un metodo statico devi dichiarare anche f statica (se lo fai dentro diventa così automaticamente ma visto che lo fai fuori lo devi fare esplicitamente), forse prima non ti diceva niente per chè hai messo la dichiarazione anche nel main!
    Prova a vedere se con questi cambiamenti ti funziona bene lo stesso!

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

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 © 2024 vBulletin Solutions, Inc. All rights reserved.