Salve,

la situazione è questa :

1)faccio partire il pannello contenente il menù principale con un jlabel e un jtextfield

2)digitando a+invio si apre un secondo menù con due jtextfield e due jlabel

3)nel primo jtextfield digito 10+invio e viene visualizzato un jdialog

4)nel secondo htextfield digito a+invio per tornare al menù principale

5)dal menù principale digito a+invio e ritorno al menù secondario

6)dal primo jtextfield digito 10+invio e vengono visualizzti due jdialog invece di uno....


in pratica il numero di jdialog visualizzati è uguale al numero di volte che entro nel menù secondario.
come mai?

il codice è il seguente:

classe principale
codice:
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
 
 

public class Test {
    
    Test2 t=new Test2();
    JFrame fin=new JFrame();
    JPanel pan=new JPanel();
    JLabel L=new JLabel();
    JTextField T=new JTextField();
    

    public Test() {
    }
    
    public void gui()  {
        
        L = new javax.swing.JLabel();
        T = new javax.swing.JTextField();
       
        T.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
              
                    Kscelte(evt);
               
            }
           
        });
        t.getScelta().addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
              
                    Kscelte2(evt);
               
            }
           
        });
        fin.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        
        L.setText("jLabel1");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(pan);
        pan.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(48, 48, 48)
                .addComponent(L)
                .addGap(18, 18, 18)
                .addComponent(T, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(216, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(62, 62, 62)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(L)
                    .addComponent(T, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(218, Short.MAX_VALUE))
        );
        
        mostra();
        
    }
    
    private void mostra() {
        fin.add(pan);
        fin.pack();
        fin.setVisible(true); 
        fin.validate();
    }
    
    private void Kscelte(java.awt.event.KeyEvent evt)  {                
        
        if (evt.getKeyChar()==KeyEvent.VK_ENTER) {                                                 
               
                    String prv=T.getText();
                       if (prv.equalsIgnoreCase("a")) {
                        pan.removeAll();                          
                        pan=t.pan_ins();
                        mostra();
                       }
    
                       
        }//fine enter
       
        
        
       
    }
    
    private void Kscelte2(java.awt.event.KeyEvent evt)  {                
        
        if (evt.getKeyChar()==KeyEvent.VK_ENTER) {                                                 
               
                    String prv=T.getText();
                       if (prv.equalsIgnoreCase("a")) {
                           pan.removeAll();
                        gui();
                       }
    
                       
        }//fine enter
       
        
        
       
    }
   
    public static void main(String[] args)  {
 

     Test tt=new Test();
     tt.gui();
      
    }
    
}
classe secondaria

codice:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Test2 extends DATI{
    public JFrame fra=new JFrame();
    
    public JPanel pan_ins() {
        
        
        JPanel pan=new JPanel();
        pivaT.setText("");
        
        
        
        pivaL.setText("PROVA");
        KeyListener k9=new KeyListener() {

            public void keyTyped(KeyEvent e) {
            //
            }
            
            public void keyPressed(KeyEvent e) {
                
                
                int evt=e.getKeyCode();
              
                if ((evt==KeyEvent.VK_ENTER)) {                    
                    
                             
                        int div=Integer.parseInt(pivaT.getText());
                        if (div==10) {
                            JOptionPane.showMessageDialog(fra, "NUMERO NON VALIDO");
                        }
                        
                        e.consume();
                        
                        
                            
                    }//controllo p.iva
                    
                    
                   
                  
                
           }

            public void keyReleased(KeyEvent e) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }
        };   
        pivaT.addKeyListener(k9);                
       
                
       sceltaL.setText("1 - CONFERMA S/N");
        
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(pan);
        pan.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(48, 48, 48)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(sceltaL)
                        .addGap(18, 18, 18)
                        .addComponent(sceltaT))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(pivaL)
                        .addGap(18, 18, 18)
                        .addComponent(pivaT, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(216, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(62, 62, 62)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(pivaL)
                    .addComponent(pivaT, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(sceltaL)
                    .addComponent(sceltaT, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(187, Short.MAX_VALUE))
        );
           
        return pan;
    }
 
    
    public JTextField getScelta() {
        return sceltaT;
    }
}