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