問題タブ [gridbaglayout]
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 - JFrame内のJPanel( FIXED SIZE )を適切に中央に配置するにはどうすればよいですか?
こんにちは、みんな!明らかに単純な問題を解決しようとしていますが、解決できません。Java/Swing ライブラリを使用したサンプル アプリケーションに取り組んでいます。JFrame と JPanel があります。次の目標を達成したいだけです。
JPanelは、JFrame の中央に配置する必要があります。
JPanelは常にsetPreferredSize () メソッドで指定されたサイズでなければなりません。このサイズ未満にサイズ変更してはなりません。
私は GridBagLayout を使用してみました: それは私ができる唯一の方法です。
以下のサンプルを参照してください。
ここにスクリーンショットがあります:
単純すぎることを行うために GridBagLayout を使用することはありません。Box を使用して最も簡単な解決策を試しましたが、これは機能しません。
サンプルコード:
ここにスクリーンショット、
何か案は?ありがとうございます :-)
java - GridBagLayoutを使用したネストされたJPanel
私はとを持ってJFrame
いGridBagLayout
ます。weightx値とweighty値には、異なるゼロ以外の値が割り当てられ、GridBagConstraints.fill=GridBagConstraints.BOTHが割り当てられます。セルの1つにJPanelをネストし、GridBagLayoutも指定しました。ネストされたJPanelにコンポーネントを追加すると、ネストされたJPanelが存在するセルのサイズが四方に大きくなり、親のレイアウトが失われます。インセットとパディングは使用されません。
この問題を解決するにはどうすればよいですか?これは、GridBagConstraints値の例です。
これは、ネストされたJPanelにコンポーネントを追加する前のスクリーンショットです。
ネストされたJPanelにコンポーネントを追加した後のスクリーンショット:
java - GridBagLayout がコンポーネントをコーナーではなく中央に配置するのはなぜですか?
これまではGridBagLayout
(手書きのコードで)なるべく使わないようにしていましたが、今回はどうしても避けられず、SUNのチュートリアルGridBagLayoutを読んでいるのですが、今の
ところうまくいきません。私は何かを誤解していると思います。
たとえば、次のコードを試してみます (SUN の投稿にあるものと似ています)。
フレームの中央にラベルとテキストフィールドを並べて表示します。
しかし、ラベルの gridx と gridy が 0 であるため、左上隅に表示されることを期待していました。同じ結果
を設定しても。
私はここで間違っていますか?
SUN の投稿から: constraints.anchor = GridBagConstraints.FIRST_LINE_START;
コンポーネントの左上の行と列を指定します。一番左の列にはアドレス gridx=0 があり、一番上の行にはアドレス gridy=0 があります。
java - Javaレイアウトマネージャーを更新する
GridBagLayoutをグローバルに初期化してから、クラスコンストラクターでインスタンス化し、いくつかのボタンなどを追加しました。
事後にどうすれば追加できますか?単純なクラスはJFrameを拡張します。事後にclass.add(stuff、gridbagconstraints)を試すと(コンストラクターでadd(stuff、gribagconstraints)だけを使用)、何も起こらず、レイアウトに何も追加されません。
レイアウトマネージャーなどを「更新」する必要がありますか?グローバルに宣言されています。
更新:revalidate()を試しましたが、機能していないようです。概念実証用のテストボタンが配置されたコードの簡略版を次に示します。
Update2:これは、Javaのpassbyvalueの性質と、レイアウトに追加しようとしている別のクラス(キャンバス)の問題のようです。解決策が見つかったら更新します。
Update3:これはスレッドの問題です。呼び出しているクラスがメインウィンドウをハングさせています。
編集:私は参照としてコードを提供し、それ自体で簡単にコンパイルするのではなく、完全な全体像を提供するために完全にしようとしました。あなたの援助を提供してくれたすべての人に感謝します。
Update4:成功!彼らの重要な点は、メディアプレーヤークラスが「isDisplayable()」チェックを実行したことです。これにより、追加されたフレームがgridbaglayoutに追加されなかった場合、プログラムがハングしました。(JInternalFramesの)値による一連の不幸な見た目の通過、gridbaglayoutへの内部フレームの事前追加、および別のメソッドからのメディアのリモート開始により、私が探しているものが機能します。
java - レイアウト設定の問題
を作ってJFrame
、そのフレームの中に、を使っていろいろなコンテナを置いたパネルがありGridBagLayout
ます。のレイアウトをに設定JFrame
しBorderLayout
、にパネルを追加しましたBorderLayout.WEST
。そのパネルのコンテナを左上隅に表示したいと思います。どうやってやるの?
パネルを追加しようとしてBorderLayout.NORTH
も、上部中央に表示されますが、代わりに左上隅に配置したいと思います。
それを行う方法はありますか?IE表示したい他のレイアウト
java - 2つのJButtonのサイズを等しくする
JButton
「OK」と「キャンセル」というテキストの2つのがあります。私はGridBagLayout
それらをに揃えるために使用していますJDialog
。アンカーをに設定しましたGridBagConstraints.CENTER
。「OK」と「キャンセル」の文字数が異なるため、ボタンのサイズが異なります。それぞれが同じサイズになるように正しく配置するにはどうすればよいですか。私は次のことを試みましたが、役に立ちませんでした。
java - Java GridBagLayout 自動構築
GridBagLayout と GridBagConstraints を使用して GUI を設計しました。可変数の行が含まれており、それぞれにいくつかの可能な列レイアウトの 1 つがあります。コードをテストするために、各行と列のすべてのセルの位置とサイズ変更動作を示すさまざまな色のパネルの GUI を構成しました。このテスト GUI は問題なく動作しますが、今度はその構築を自動化する必要があります。具体的には、行を 3 つの異なるタイプのいずれかにする必要があります。以下のコードを実行して結果の GUI を見ると、行 1 が 1 つのタイプ、行 2、6、および 7 が別のタイプ、行 3、4、および 5 がさらに 3 番目のタイプであることがわかります。これら 3 種類の行をそれぞれ独自のクラスにカプセル化する必要があります。さらに、コードで 3 番目のタイプの可変数の行 (例では行 3、4、および 5 で示されています) を作成できるようにする必要があります。
行を独自のクラスにカプセル化しようとすると、GUI が本来あるべき姿に見えなくなります。以下のテスト コードは、本来あるべき姿の GUI レイアウトを生成します。上記の最初の段落で説明した機能を持つように、このコードを変更する方法を誰か教えてもらえますか?
以下のテスト コードを IDE に貼り付けるだけで、すぐに動作させることができます。テスト コードは、次のように 2 つの個別のファイルにあります。
GridBagLayoutDemo.java のコードは次のとおりです。
TestPanel.java のコードは次のとおりです。
java - GridBagLayout 追加後にコンポーネントを「ジャンプ」させない
GridBagLayout を使用して、列数が 3 以下で行数が可変のレイアウト (これを簡単に実行できる別のレイアウトを誰かが知っている場合は教えてください)、「追加」ボタンを押すたびに四角が表示されます。利用可能な最初の場所に追加されます。そのようです:
x は四角形で、[追加] を押すと、o の位置に新しい四角形が追加されます。私は次のように「何とか機能させる」ことができました:
問題は、追加する 2 番目の正方形が次のように追加されることです。
最初の正方形と 2 番目の正方形の間に余分なスペースがあることに注意してください。余分な行が追加されると、同じ問題が発生します。
正方形が「ジャンプ」せず、最初の例のように追加されるようにコードを修正するにはどうすればよいですか?
編集: 要求に応じて、通常の GridLayout に変換した後のより良い例:
そして、それを JFrame に追加するだけです。
java - すべてのgridbaglayout要素を揃えます
Swingを使用してJavaでOptionDialogのようなFirefoxを作成したいと思います。
ここで、すべての要素をウィンドウの北に揃えようとしました。最初の要素で作成しましたが、次の要素は部屋を垂直に埋めており、位置合わせされていません。
このために私はGridBagLayoutを使用しています。
コードは次のとおりです。
手伝ってくれてありがとう
java - パネルがメイン フレームに追加されない
メインフレームと3枚のパネルがあります。これらの 3 つのパネルをメイン フレームに追加したいと考えています。ただし、追加されるのはそのうちの 2 つだけです。3つ目はそうではありません。理由がわかりません。誰か助けてくれませんか?
上記のコードはフレームのコンストラクターです。