私が自分のプログラムに取り込もうとしている概念は、基本的に次のとおりです。
-メイン ウィンドウ: プログラムのメイン フレームを保持するメイン クラス。
public class MainWindow extends JFrame {
...
}
-その他のクラス: JPanel を拡張して、1 つのオブジェクトまたはエンティティとして 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 を学ぶでしょう。
しかし、私の主な質問は、すべてが異なるクラスにある場合、ActionEvent のトリガーに基づいて、JPanels をそのようにリモートで切り替えるにはどうすればよいかということです。クラス間に共有コンポーネントが必要だと思いましたが、これは機能していないようです。私は正しい軌道に乗っていますか?
コンポーネントのActionEventをトリガーしても何も変わらないため(リスナーが追加され、すべてが)、remove()およびadd()で試しているコードは機能していないようです。validate() と repaint() も含めていますが、それでも何も起こりません。
私はもはや初心者ではありませんが、信じられないほど経験豊富でもありません。助けてくれてありがとう。