У меня есть основной JFrame с menubar, jPanel с info и textbox в главном фрейме. Я пытаюсь открыть другие панели, но главное меню появляется плюс текстовое поле из основного кадра остается с новой панелью, показывающей также. Когда я открываю новую панель, я получаю menubar, но не текстовое поле, которое было на главном фрейме. Кроме того, когда я пытаюсь открыть главный фрейм, закрыв новую панель, я только получаю menubar, main jpanel в главном фрейме, но не текстовое поле. Вот мой код. Я не уверен, почему я не получаю текстовые поля под главной панели фрейма, чтобы показать снова. Любая помощь была бы очень признательна.
private void MenuItem_caseOpenActionPerformed(java.awt.event.ActionEvent evt){
caseNewPanel = new CaseNewPanel();
this.setContentPane(caseNewPanel);
this.setTitle("Case Menu");
this.setSize(1200,800);
this.setBounds(5, 5, 1200, 800);
this.invalidate(); this.validate();
this.repaint();
}
private void jButton_exitMouseClicked(java.awt.event.MouseEvent evt) {
System.exit(0);
}
private void jMenuItem_caseCloseActionPerformed(java.awt.event.ActionEvent evt) {
this.getContentPane().removeAll();
mainMenuFrame = new MainMenuFrame();
this.setContentPane(mainMenuFrame.jPanel_mainMenu);
mainMenuFrame.jPanel_mainMenu.setVisible(true);
this.setSize(567,304);
this.setBounds(300, 300, 567,304);
this.invalidate(); this.validate();
this.repaint();
}
Правильный. Компонент Swing может иметь только одного родителя.
Для этой проблемы вы должны использовать панель с CardLayout для того чтобы включить легкое переключение панелей.
Так что вам нужно либо:
Вариант 1 должен быть самоочевидным.
Для варианта 2 ознакомьтесь с разделом из учебника Swing о том, как использовать CardLayout . В этом примере jcombobox является общим компонентом (не JTextField), но концепция та же.