問題タブ [cardlayout]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JPanelの再インスタンス化
私が書いているアプリケーションで a を再インスタンス化する必要がありますJPanel
(基本的には、ユーザーがグラフを作成できる入力ウィンドウであり、ユーザーがそれを空にできるようにしたいので、使用CardLayout
はオプションではありません)。次のようなものを使用することを考えていました:
問題は、パネル p1 が再インスタンス化されている間、背景色が変更されるため、lbl2 が表示されないことです。これは、パネルを空白の状態に再インスタンス化するだけであればそれほど悪くはありませんが、これを使用することを考えていましたデコレータ パターンを使用してパネルに責任を追加する方法もあるため、新しく復元されたパネルのコンポーネントを表示する必要があります。
java - 切り替え後のJPanelの起動方法
メニューと実際のゲーム自体を含む Pong クローンを作成しています。を使用しCardLayout
て 2 つを切り替えていJPanels
ます。
しかし、メニューからボード (またはプレイエリア) に切り替えると、ボードはそこに座ったままになり、キーボード入力を受け付けません。キーリスニングを開始または開始するにはどうすればよいですか?
java - JFrameのコンポーネントをクリアし、新しいコンポーネントを追加します
、JFrame
いくつかのオプションがあります。OKボタンが押されたら、同じJFrame
ように内容をクリアして新しい内容を追加したいと思います。私はそれを試しましたが、問題は新しいJFrame
ものが飛び出します。私は何が間違っているのですか?
java - Qt フレームワークに Swing CardLayout に相当するものはありますか?
Qt フレームワークを使用してアプリケーションを設計していますが、複数のダイアログを開くと面倒になる可能性があるため、複数のダイアログの使用を避けたいと考えています。Qt フレームワークに Java の CardLayout のようなものがあるのだろうかと思っていました。
ご協力いただきありがとうございます。
java - CardLayoutに表示されるJPanelに合うようにJFrameサイズを設定するにはどうすればよいですか?
にJFrame
のセットが含まJPanels
れていCardLayout
ます。それぞれJPanel
サイズが異なりJFrame
、現在表示されているサイズに適応させたい(のサイズに適応させたくJPanel
ない)。JPanel
JFrame
どうすればこれを達成できますか?
java - CardLayout での切り替え後に JPanel がフォーカスしない
個人的なプロジェクトとして Tetris クローンを作成しています。メニューを切り替えるために を使用してCardLayout
いますが、問題が発生しました。あるメニューから別のメニューに切り替えると、フォーカスが別のメニューに移動しませんJPanel
。どうすればこれを修正できますか?
ここに私のJFrameがあります:
ここに私の最初の JPanel/メニューがあります:
これが私の 2 番目の JPanel/メニューです。
前もって感謝します!
java - CardLayout に間違った JPanel が表示されます。getGraphics() に関する問題
SpacePotaters (JFrame のサブクラス) というトップレベルの GUI クラスがあり、そのコンテンツ ペインに panelViews (CardLayout レイアウト マネージャーを使用) という JPanel を追加します。特に、MainMenu オブジェクト (JPanel のサブクラス) と GameView オブジェクト (JPanel のサブクラス) をカードとして panelView に追加します。
便利な場合は、メイン メニューのペイント メソッドを次に示します。
今は背景画像をペイントするだけです。後で、クリックすると別のカードに切り替わる JButton を追加します。
メイン メニュー カードから始めて、必要に応じて他のカードに切り替えるという考え方です。プログラムを実行したところ、gameView 用に作成された画像に置き換わる前に、メイン メニュー カードが一瞬点滅することに気付きました。ゲームが途中で開始されないように、実際にそのカードに切り替えるまで、gameView グラフィックスのレンダリングを待つ必要があることはわかっています。私が混乱するのはそこじゃない。待たなくても、gameView が表示されずに起動してしまうのではないでしょうか。つまり、gameView 内で何が起こっているかに関係なく、mainMenu だけが表示されるカードのままであるべきではありませんか?
問題は、アクティブ レンダリングとダブル バッファリングを使用する gameView 内にあると考えました。GameView には、ゲームのループごとに 1 回呼び出される次のメソッドがあります。
このメソッドの本体をコメント アウトすると、必要な結果が生成されます。mainMenu のみが表示されます。どうしてこうなったのか不思議です。各コンポーネント (JFrame、JPanel など) には独自のグラフィックス コンテキストがあると思いました。では、GameView 内で getGraphics() を呼び出した場合、spTop または panelViews のグラフィック コンテキストではなく、gameView パネルのグラフィック コンテキストを返すべきではありませんか? また、その特定のグラフィックス コンテキストのみを変更するため、gameView パネルが表示されない場合 (mainMenu オブジェクトで CardLayout の show() メソッドを使用する場合は表示されないはずです)、メイン メニューのビューに影響を与えることはありません。 . 何か案は?
注: isVisible() を使用して gameView と mainMenu の両方をテストすると、gameView は false を返し、mainMenu は true を返します。また、getGraphics() を使用して、mainMenu、spTop、および gameView グラフィック コンテキストがすべて異なるかどうかをテストしました。そのため、gameView は独自のグラフィックス コンテキストで画像を描画しており、表示されませんが、paintScreen() 内の drawImage() の効果は引き続き表示されます。本当に混乱しています。
user-interface - カードレイアウトで特定のパネルを表示する
だから私はGUIで研究課題に取り組んでおり、左側のパネルに「入力」、「処理」、「表示」の3つのボックスがあります。CardLayoutを使用して「入力」を選択すると、最初のパネルが右、「表示」を選択すると最後のパネルが表示されますが、この部分に「処理中」を表示させることができません。
その全体の形式のコード:
java.awt.eventをインポートします。; javax.swingをインポートします。;
パブリッククラスBookCentreはJFrameを拡張し、ActionListenerを実装します{
}
}
}
}
}
}}
public void ActionPerformedで、cardManager.first、next、previous、lastを使用できました。ただし、「処理中」パネルのみを表示したいのですが(card2のように)、ユーザーが最初、最後、またはすべてのパネルを循環して表示するのではありません。
java - Java で JComboBox の値を変更する
JComboBox の値を ActionListener から変更しようとしていますが、うまくいきません。
変更すると CardLayout が変更される (別の GUI に切り替えられる) JComboBox があります。
JComboBoxのselectedItemを自動的に変更したいユーザー向けのオプションを備えたメニューバーがあります。本質的に、私の最終的な望みは、メニュー バーで CardLayout を変更できる場所にすることです (ただし、ActionListener でカード レイアウトを変更することはできませんでした)。
コードが内部リスナー クラスから JComboBox を見つけられないようです。
私が読みに行くための参考文献を含め、どんな助けでも大歓迎です。
これが私の現在のコードです(まだ開発中です):
メニューを使用しようとすると発生するエラーは次のとおりです。
java - java.lang.IllegalArgumentException:レイアウトに追加できません:制約は文字列である必要があります
コードに問題がありCardLayout Manager
ます。なぜこの例外が発生するのか理解できません。メソッドに文字列を渡していますCardLayout.show()
が、それでもこのエラーが発生します。助けてください。これが私のメインクラスです。
これは私がカードを交換している私の外部クラスです。
実はこれに関してはかなり緊急に助けが必要です。:(