0

メインコンテンツペインに挿入されているコンポーネントがありますが、何らかの理由でその領域が埋められていません。

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)

また、コンポーネントの境界線を設定すると、スペースの一部しか埋められないため、追加するコンポーネントに問題はありません。

コンポーネントがスペースの中央に表示され、アンカーに従わないことは注目に値します。ここから、私の問題はweightXweightYプロパティであることがわかりました。コンテンツペインの他のコンポーネントを見ると、すべてのコンポーネントに重みが設定されています。

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しばらく使っていますが、このようなものに遭遇したことはありません。

これは、本来あるべき空間での様子の画像です。

編集:小さなサンプルプログラムを作成するとうまくいくので、問題がどこかにあることがわかりました。少し困惑しているので、作業中のプログラムのフルバージョンをアップロードしました。それが実際に何をするかについて心配する必要はありません。私はワークロードパネルがスペースを埋めていないことだけを気にします。

4

1 に答える 1

0

問題の解決策:

InternalPanelレイアウトマネージャーのないタイプオブジェクトにコンポーネントを追加していました。(デフォルトはflowLayout)

于 2012-09-27T02:42:39.373 に答える