Укажите на ошибку с переключением окон - 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д