Укажите на ошибку с переключением окон - Java

Узнай цену своей работы

Формулировка задачи:

Писал программу, все работало. Нечаянно испортил код, так как нашел его где-то в учебных просторах инета и сам не понимаю - восстановить не мог, нашел вроде снова. Итак, код, вроде как, работает без ошибок и предупреждений, окошко первое закрывается - второе открывается вместо него. А вот назад вернуться, как было ранее - уже не выходит. Приложение сразу молча успешно закрывается. Что не так? И вообще что этот код делает, я никак не могу врубиться в его логику?! (

выделен жирным непонятный мне код

)
Листинг программы
  1. public class Start extends JFrame
  2. {
  3. private static final long serialVersionUID = 1L;
  4. public static void main(String[] args)
  5. {
  6. JFrame firstFrame = new JFrame();
  7. firstFrame.setName("Окно один");
  8. firstFrame.setLocation(200, 350);
  9. firstFrame.setSize(600, 400);
  10. firstFrame.setBackground(Color.WHITE);
  11. firstFrame.setDefaultCloseOperation(EXIT_ON_CLOSE);
  12. firstFrame.setVisible(true);
  13. JPanel buttonPanelOne = new JPanel();
  14. buttonPanelOne.setLocation(10, 10);
  15. buttonPanelOne.setSize(500, 300);
  16. buttonPanelOne.setVisible(true);
  17. JButton nextButton = new JButton("Далее");
  18. nextButton.setLocation(40, 60);
  19. nextButton.setSize(50, 150);
  20. nextButton.addActionListener(new ActionListener()
  21. {
  22. public void actionPerformed(final ActionEvent e)
  23. {
  24. new Second();
  25. [B]Container frame = nextButton.getParent();
  26. do frame = frame.getParent();
  27. while (!(frame instanceof JFrame));
  28. ((JFrame) frame).dispose();[/B]
  29. }
  30. });
  31. buttonPanelOne.add(nextButton);
  32. firstFrame.add(buttonPanelOne);
  33. }
  34. }
-_- не знаю уж как на том месте в коде жирный сделать.. выделил буквами В.. А вот второй фрейм. Второе окошко, где кнопка "Назад" находится:
Листинг программы
  1. public class Second extends JFrame
  2. {
  3. private static final long serialVersionUID = 1L;
  4. public Second()
  5. {
  6. JFrame WindowTwo = new JFrame();
  7. WindowTwo.setName("Окно два");
  8. WindowTwo.setLocation(200, 300);
  9. WindowTwo.setSize(400, 300);
  10. WindowTwo.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  11. WindowTwo.setVisible(true);
  12. JPanel panelButtonTwo = new JPanel();
  13. panelButtonTwo.setSize(350, 250);
  14. panelButtonTwo.setBorder(new BevelBorder(3, Color.blue, Color.orange));
  15. panelButtonTwo.setVisible(true);
  16. JButton backButton = new JButton("Назад");
  17. backButton.setLocation(10, 10);
  18. backButton.setSize(50, 150);
  19. backButton.addActionListener(new ActionListener()
  20. {
  21. public void actionPerformed(final ActionEvent e)
  22. {
  23. WindowTwo.dispose();
  24. }
  25. });
  26. panelButtonTwo.add(backButton);
  27. WindowTwo.add(panelButtonTwo);
  28. }
  29. }

Решение задачи: «Укажите на ошибку с переключением окон»

textual
Листинг программы
  1. final JButton show = new JButton("Об авторах");
  2. show.addActionListener(e -> {
  3.     final JFrame frame = FrameManager.getFrame("About"); // нужно отдельно создать фрейм, а потом регать его в registerDefaultFrames()
  4.     frame.setVisible(true);
  5.    
  6.     FrameManager.getFrame("MainMenu").setVisible(false); // если надо скрывать главное окно перед показом нового
  7.    
  8.     frame.addWindowListener(new WindowAdapter() {
  9.         @Override
  10.         public void windowClosing(WindowEvent e) {
  11.             FrameManager.getFrame("MainMenu").setVisible(true); // после закрытия или скрытия фрейма мы уходим обратно в главное меню(если это окно мы раньше скрывали, канешн)
  12.         }
  13.     });
  14. });
  15. getContentPane().add(show);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут