質問

私のGUIアプリケーションでは、私は私のプログラムの実行中にさまざまなポイントでインスタンス化されているいくつかのJPanelを持っており、特定のアクションは、そのうちの一つは、スクロールペインに表示されるようになります。

mViewport.setViewportView(currentPanel);
トラブルは、私のパネルは、グリッドバッグレイアウトを使用して行われ、そしてその行動は、それが内部のある側JScrollPane内自体を中央にあること、です。これは、GUIの見た目が奇妙な作ります。

左上整列するグリッドバッグレイアウトパネルを強制する方法の誰もが知っていますか?

ありがとうございます。

<時間>

EDIT

なお、ここで私はそのスクロールペイン内ではなく、パネル内のコンポーネントに関するパネル全体のアライメントについて尋ねています。

役に立ちましたか?

解決 2

私はいくつかの周りをいじるの後に自分の質問への解決策を見つけます:

は重みを設定するJPanelを使用したためGridBagLayout内の構成要素の位置合わせに影響を与えることができるように思われます。しかし、それはJPanelJScrollPaneのアライメントに影響を持っていませんでした。

私は、私は私の以前のコードでやっていたとしてのありませんのにあるという簡単な解決策は、直接内部JPanelJScrollPaneを入れました

if (currentPanel != mCurrentPanel)
{
    mViewport.setViewportView(currentPanel);
}

...しかし、代わりに「外側」JPanel内部JScrollPane、およびFlowLayoutを使用することセットを置くこと。それから私は、パネルを切り替えたいとき、私は「外側」パネル内のパネル古いと場所を削除します。

if (currentPanel != mCurrentPanel)
{
    if (mCurrentPanel != null)
    {
        mOuterPanel.remove(mCurrentPanel);
    }
    mCurrentPanel = currentPanel;
    mOuterPanel.add(mCurrentPanel);
}

それは私が唯一の代わりに私が持っていた多くのパネルのそれぞれの1クラスでの効果の変化、にありましたので、このアプローチは、十分ではなく働いています。

他のヒント

あなたは、パネル内部の構成要素のうちの1つ以上に(GridBagConstraintsに)重みを設定する必要があります。これにより、コンポーネントは(ウェイトなしで、部品のみ、彼らが必要なものを取り上げると、パネルは利用可能なスペースの中央に配置されます)利用可能なスペースをより取るために「プッシュ」の効果があります。

あなたがスクロールペインの左側上部にあるコンポーネントを合わせたい場合

、1.0に下のコンポーネントのY体重を設定して、1.0に最も右のコンポーネントのxの重みを設定します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top