2016-10-18 12 views
0

今、私は小さなテトリスクローンをプログラムしようとしています。 したがって、ONE jFrame(複数のjPanel(メインメニュー、ゲーム自体、オプションなどなど)が含まれている必要があります。複数のjPanelをjFrameに入れてjPanelsを切り替える

私は少し調べました。多くの人がCardLayoutを使うべきだと言います。 NetBeans GUIビルダーに行って、jFrameをCradLayoutに切り替えて2つのパネルを追加しました。 最初のパネルにはボタンしかなく、2番目のパネルには私の「ゲーム」(テトリスマトリックスのグラフィカル表示、次のブロックのグラフィック表示、終了ボタン)が含まれています。

写真より良く理解するために:

「メインメニュー」( - 私の新しいので、2つの以上のリンクを投稿can't)「ゲーム開始」と言うだけのボタンです。

My current "Game Menu"

The structure of the "Card Layout in the NetBeans GUI Builder"

パネルの間にスイッチを達成するために - 私、この(少し研究した後に見つかった)を使用して:

@Action 
public void cardSwitcher() { 
    CardLayout cl = (CardLayout) (gamePanel.getLayout()); 
    cl.next(gamePanel); 
} 

"ゲーム開始" ボタンを押すと、その後の呼び出しをメソッドcardSwitcher()。

私は今jFrameを起動するとうまく始まり、スタートボタンとそのすべてが表示されます。しかし、私がボタンを押すとすぐに私はClassCastExceptionを取得します。 「javax.swing.GroupLayoutはjava.awt.CardLayoutにキャストすることはできません」

だから今、私の質問は、私もそれスイッチングに複数のJPanelで1つのフレームを持っている私の目標を達成することができ、ありますこれらはCardLayoutを使用するか、これを行うためのより簡単な方法がありますか?

ご協力いただきありがとうございます。

PS:間違ったスペルや文法の悪いことは申し訳ありませんが、私はネイティブスピーカーではありません。 さらに、質問にすでに回答があり、私が郵便局を見つけるために馬鹿にしていたら、すぐにこの投稿を削除するつもりです。そして私はいつも建設的な評論家のために開いています。

+0

私はそれを修正しました。私のミスは、私がJFrameをCardLayoutにしようとしたことでした。そして、あなたが理解する限り、jFrameをCardLayoutにキャストすることはできません。あなたはjPanelを使うことができます。そこで、新しいjPanelを作成してカードレイアウトに変更し、jFanelではなくjPanelで構造を設定しました。しかし、とにかく皆様に感謝して、あなたは本当に解決策を見つけるのを手伝ってくれました。 – Gwitninm

答えて

0

はい、cardLayoutでパネルを切り替えることができます。 cardLayoutをcardLayout内のパネルからではなく(おそらくJFrame#getLayout())、cardLayoutをcardLayoutの内側にあると仮定して記述したものから直接取り出してください。

+0

今、 "cardSwitcher"メソッドがJFrame(MainMenuという名前)にあります。私は "gamePanel.getLayout()"を "this.getLayOut()"に変更しました。 – Gwitninm

+0

しかし、私はこの実行を得ています: – Gwitninm

+0

"java.awt.BorderLayoutはjava.awt.CardLayoutにキャストできません" – Gwitninm

関連する問題