1

これが私が試したものです:

いくつかの JPanels を JFrame にドラッグしました (NetBeans インスペクタ ウィンドウを使用)。

JFrame コンストラクターで、.setVisible(false)最初に表示したいものを除いて、すべての JPanel を を使用して非表示にしました。

.setVisible(false)それは機能し、actionPerformed を使用していくつかのボタンを使用し、現在のカードと.setVisible(true)見たいカードに追加することで、簡単に別のカードに移動できます。

私が今やりたかったのは、ブラウザの前後に似たCardLayoutprevious()とを使用することです。next()また、別の場所からパネルに到達したいと考えています。つまり、2 つのパネルが同じパネルにリンクできるため、前のパネルが常に同じであるとは限りません。

JFrame クラス内の actionPerformed で次のコードを使用してみました。

CardLayout cardLayout = (CardLayout) this.getLayout();
cardLayout.previous(this);

しかし、うまくいきません。私は何が欠けていますか?これは私が探していることをするはずですか?

4

2 に答える 2

3

のレイアウトをに設定したのでJFrame、&メソッドCardLayoutを使用するときは親コンテナを使用する必要があります。親コンテナの場合はコンテンツペインです。だから変更:next()previous()JFrame

cardLayout.previous(this);

cardLayout.previous(getContentPane());
于 2012-11-14T01:12:43.227 に答える
1

String previousCardJPanelで変数を宣言します。CardA から CardB に移動するときは、previousCard変数を「CardA」またはカードの名前に設定します。したがって、あるカードから別のカードへのすべてのトランジションに対してこれを設定すると、戻るボタンは常に同じことを行います。

cardLayouot.show(getContentPane(), previousCard);
于 2013-12-10T13:38:13.297 に答える