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

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

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

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

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

)
public class Start extends JFrame
{
    private static final long serialVersionUID = 1L;
    public static void main(String[] args)
    {
        JFrame firstFrame = new JFrame();
        firstFrame.setName("Окно один");
        firstFrame.setLocation(200, 350);
        firstFrame.setSize(600, 400);
        firstFrame.setBackground(Color.WHITE);
        firstFrame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        firstFrame.setVisible(true);
            
            JPanel buttonPanelOne = new JPanel();
            buttonPanelOne.setLocation(10, 10);
            buttonPanelOne.setSize(500, 300);
            buttonPanelOne.setVisible(true);
        
                JButton nextButton = new JButton("Далее");
                nextButton.setLocation(40, 60);
                nextButton.setSize(50, 150);
                nextButton.addActionListener(new ActionListener()
                {
                    public void actionPerformed(final ActionEvent e)
                    {
                        new Second();
                        [B]Container frame = nextButton.getParent();
                            do frame = frame.getParent();
                            while (!(frame instanceof JFrame));
                        ((JFrame) frame).dispose();[/B]
                    }
                });
            
            buttonPanelOne.add(nextButton);
            
        firstFrame.add(buttonPanelOne);
    }
}
-_- не знаю уж как на том месте в коде жирный сделать.. выделил буквами В.. А вот второй фрейм. Второе окошко, где кнопка "Назад" находится:
public class Second extends JFrame
{
    private static final long serialVersionUID = 1L;
    
    public Second()
    {
        JFrame WindowTwo = new JFrame();
        WindowTwo.setName("Окно два");
        WindowTwo.setLocation(200, 300);
        WindowTwo.setSize(400, 300);
        WindowTwo.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        WindowTwo.setVisible(true);
        
            JPanel panelButtonTwo = new JPanel();
            panelButtonTwo.setSize(350, 250);
            panelButtonTwo.setBorder(new BevelBorder(3, Color.blue, Color.orange));
            panelButtonTwo.setVisible(true);
            
                JButton backButton = new JButton("Назад");
                backButton.setLocation(10, 10);
                backButton.setSize(50, 150);
                backButton.addActionListener(new ActionListener()
                {
                    public void actionPerformed(final ActionEvent e)
                    {
                        WindowTwo.dispose();
                    }
                });
            
                panelButtonTwo.add(backButton);
        
        WindowTwo.add(panelButtonTwo);
    }
}

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

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

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


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

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

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