メインコンテンツペインに挿入されているコンポーネントがありますが、何らかの理由でその領域が埋められていません。
getInstance().add(internalPanel, LayoutFactory.newFactory().setX(1).setY(1).
setWeightX(1).setWeightY(1).setFill(GridBagConstraints.BOTH));
LayoutFactory
のために特別に作成しましたGridBagLayout
。プロパティを設定してオブジェクトを返すだけです。
基本的に、問題は、コンポーネントをコンテンツペインに追加すると、そのコンポーネント専用のスペースがいっぱいにならないことです。weightX
とが0に設定されているかのように、絶対最小値を取ります。私はとをweightY
試しました。どちらもプログラムに目に見える影響はありません。setAnchor(GridBagConstraints.FIRST_LINE_START)
setAnchor(GridBagConstraints.NORTHWEST)
また、コンポーネントの境界線を設定すると、スペースの一部しか埋められないため、追加するコンポーネントに問題はありません。
コンポーネントがスペースの中央に表示され、アンカーに従わないことは注目に値します。ここから、私の問題はweightX
とweightY
プロパティであることがわかりました。コンテンツペインの他のコンポーネントを見ると、すべてのコンポーネントに重みが設定されています。
getInstance().add(MainFrame.buttons, LayoutFactory.newFactory().setX(0).setY(1).
setWeightY(1).setWeightX(0).setFill(GridBagConstraints.BOTH));
と
getInstance().add(panel, LayoutFactory.newFactory().setX(0).setY(0).setWidth(2)
.setWeightX(1).setWeightY(0).setAnchor(GridBagConstraints.FIRST_LINE_START)
.setFill(GridBagConstraints.NONE));
他の場所で問題が発生している可能性は確かにありますが、この投稿をテキストで埋め尽くしたくありませんでした。これを理解するためにさらに情報が必要な場合は、喜んで提供させていただきます。うまくいけば、これは理にかなっています。私はGridBagLayout
しばらく使っていますが、このようなものに遭遇したことはありません。
編集:小さなサンプルプログラムを作成するとうまくいくので、問題がどこかにあることがわかりました。少し困惑しているので、作業中のプログラムのフルバージョンをアップロードしました。それが実際に何をするかについて心配する必要はありません。私はワークロードパネルがスペースを埋めていないことだけを気にします。