Da una rapida occhiata, un po' superficiale, mi pare che ci sia una doppia crazione del JFrame2

codice:
class PulsanteItem implements ItemListener{
 Frame2 riduci = new Frame2(); 
 
    public void itemStateChanged(ItemEvent e) {
       int status = e.getStateChange();
       if(status == ItemEvent.SELECTED) {
         System.out.println("Tasto Schiacciato");
       new Frame2(); 
     }
       else
        System.out.println("Tasto Rilasciato");
//Qui chiamo tramite un oggetto il metodo contenuto nell'altroframe  
     riduci.Nascondi();
     }
  }
Io proverei così:

codice:
class PulsanteItem implements ItemListener{
 Frame2 riduci = new Frame2 
 
    public void itemStateChanged(ItemEvent e) {
       int status = e.getStateChange();
       if(status == ItemEvent.SELECTED) {
         System.out.println("Tasto Schiacciato");
       riduci.setVisible(true); 
     }
       else
        System.out.println("Tasto Rilasciato");
//Qui chiamo tramite un oggetto il metodo contenuto nell'altroframe  
     riduci.setVisible(false); 
     }
  }
Ti ho evidenziato le parti interessate dalle modifiche. Poi nel codice che hai scritto della seconda classe manca "extends JFrame"

Ciao.