java,jak zamknąć 2 okno i przejść do głównego okna

0

Witam
mam pytanie
stworzyłem sobie aplikację w java i nie wiem jak zamknąć drugie okno, które otworzyłem i przejść do głównego okna
nie od nowa tylko kontynuować zadanie które się robiło
mój program ma działać, że jak nacisnę informacja o programie o ma się otworzyć nowe okno o informacji programie, gdy nacisnę przycisk button ma się to okno z informacją zamknąć i ma przejść do kontynuacji głównego okna
oto fragment kodu


    
 public void actionPerformed(ActionEvent ae) {
 Object p=ae.getSource();
 if (p==nowy)
 {
 try {   
          orginal.getDocument (  ) .remove ( 0, orginal.getDocument (  ) .getLength (  )  ) ; 
        } catch ( Exception ee )  {  
             System.err.println ( "Blad New Option: " + ee ) ;             
            }  
 }
 else if (p==otworz)
 {  
fOpen();
 } 
 else if (p==zapisz)
 {  
 fSave();
 } 
 else if (p==menZakoncz)
 {
     System.exit(0);
 }
 else if (p==informacja)
 {
    ...
    
        Button button = new Button("Wyjście"); 
     	JFrame frame = new JFrame("O_programie");
	JLabel opis_l = new JLabel("Wersja_programu : 1.0");
        opis_l.setPreferredSize(new Dimension(300, 250));
        
	frame.getContentPane().add(opis_l);
      //  frame.setSize(600,600);
        frame.setLocation((rozX-555)/2, (rozY-555)/2);
        frame.setResizable(false);
         frame.add(button);
     // frame.setTitle("xxxx");
         
          frame.setLayout(new FlowLayout());
        frame.pack();
        frame.setVisible(true);

	 
         button.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ae)
            {
            // dispose();  // zamkniecie okna głównego
          //  System.exit(0);   //zamknięcie okna wszystkie
       /*  
       jeśli tak jest, należy używać setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); na JFrame podczas inicjowania, nie setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    DISPOSE_ON_CLOSE zakończy swoją aplikację, gdy ostatni JFrame jest zamknięta.
    EXIT_ON_CLOSE zakończy swoją aplikację jak najszybciej, że JFrame jest zamknięta.
    HIDE_ON_CLOSE (domyślnie) nie zakończy swoją aplikację, nawet jeśli wszystkie JFrames są ukryte. 
    * 
    */
           //      setDefaultCloseOperation(EXIT_ON_CLOSE); 
                 new c();   //tworzy mi nowe główne okno   
            }
              });

...         
            
 }
 else if (p==menKopiuj) {
 orginal.setText(zaszyfrowane.getText());
 zaszyfrowane.setText("");
 } else if (p==menWyczysc) {
 orginal.setText("");
zaszyfrowane.setText("");
} else if (p==menWyczyscZaszyf)
 zaszyfrowane.setText("");
 else if (p==menKlucz)
 new ustKlucz();
 else if (p==menSzyfruj)
 {
 zaszyfrowane.setText(szyfruj(orginal.getText(), klucz));
 } else if (p==menOdszyfruj)
 zaszyfrowane.setText(odszyfruj(orginal.getText(), klucz));
 }  
0

najprościej byłoby chyba zrobić tak:

frame.setVisible (false); 
0

witam
dodanie
frame.setVisible (false);
wywala błąd odnośnie frame

run:
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - local variable frame is accessed from within inner class; needs to be declared final
at c$1.actionPerformed(c.java:190)
at java.awt.Button.processActionEvent(Button.java:409)
at java.awt.Button.processEvent(Button.java:377)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - local variable frame is accessed from within inner class; needs to be declared final
at c$1.actionPerformed(c.java:190)
at java.awt.Button.processActionEvent(Button.java:409)
at java.awt.Button.processEvent(Button.java:377)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - local variable frame is accessed from within inner class; needs to be declared final
at c$1.actionPerformed(c.java:190)
at java.awt.Button.processActionEvent(Button.java:409)
at java.awt.Button.processEvent(Button.java:377)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - local variable frame is accessed from within inner class; needs to be declared final
at c$1.actionPerformed(c.java:190)
at java.awt.Button.processActionEvent(Button.java:409)
at java.awt.Button.processEvent(Button.java:377)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - local variable frame is accessed from within inner class; needs to be declared final
at c$1.actionPerformed(c.java:190)
at java.awt.Button.processActionEvent(Button.java:409)
at java.awt.Button.processEvent(Button.java:377)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
BUILD SUCCESSFUL (total time: 6 seconds)

0

Przypadkiem okno główne i to drugie nie ma takiej samej nazwy?

0

zmieniłem nazwę i nadal tak samo błąd

0

Zabronili Ci czytać? Przeczytaj wreszcie te komunikaty o błędach i dopisz final przed deklaracją zmiennej.

0

problem rozwiązany
dopisałem
final JFrame okno = new JFrame("O_programie");
dziękuje za odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1