Концепции Я пытаюсь работать в мою программу в основном:Как я могу переключить JPanels удаленно?
-Главного Window: основной класс, который содержит основной каркас программы, то есть:
public class MainWindow extends JFrame {
...
}
-Других классы: классы которые проходят JPanel, так что они могут быть легко добавлены в MainWindow в качестве одного объекта или субъекта, а именно:
public class SomePanel extends JPanel {
...
}
таким образом, я могу сказать, для главного окна:
public MainWindow() {
...
SomePanel sp = new SomePanel();
add(sp);
...
}
Когда некоторые ActionEvent срабатывает, я могу сказать, в классе MainWindow:
// remove the current panel
getContentPane().remove(sp);
// insert the new panel
getContentPane().add(someOtherPanel);
validate();
repaint();
Понятие, я полагаю, это как CardLayout, за исключением того, я не удосужился обучение CardLayout еще и я было похоже на попытку этой концепции. Вероятно, я, возможно, изучу CardLayout в какой-то момент, в зависимости от того, что проще.
Но мой главный вопрос: как я могу переключаться между JPanels удаленно, как это, на основе триггера ActionEvent, если все в разных классах? Я думал, что между классами должен быть какой-то общий компонент, но это, похоже, не работает. Я на правильном пути?
Код, который я пытаюсь удалить() и add(), кажется, не работает, так как ничего не меняется, когда я запускаю ActionEvent для компонента (слушатель добавлен и все). Я также включаю validate() и repaint(), но все равно ничего не происходит.
Я уже не новичок, но и не невероятно переживаю, так что несите меня, если есть что-то очевидное, что мне не хватает. Спасибо за любую помощь.
'theWindow.revalidate()', вероятно, лучше работать – MadProgrammer
я не знал этого метода, я всегда использую 'repaint'. Спасибо, я отредактировал свой ответ. – snickers10m
Теперь я могу с уверенностью утверждать: D – MadProgrammer