0

SWT テキストがあり、内容が大きいです。ウィンドウのテキストボックスを最大化すると、その内容により、垂直方向に拡大し、残りのコントロールが非表示になります。

Text contentText=new Text( GroupName, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.WRAP );

contentText.setLayoutData( new GridData( SWT.FILL, SWT.FILL, true, true, 1, 1 ) );

これを解決するには?

ありがとう

4

1 に答える 1

0

レイアウト自体に contentText を配置する方法に完全に依存します。たとえば、GridLayout(1 つだけ) を使用していて、それが 1 X 2 グリッド (または、グリッド レイアウトの特定の行にある列の数を制御するだけでよいため、実際には n X 2) である場合、次のように配置します。 「右」グリッド内の contentText オブジェクトを取得し、gridData で行ったように contentText をインスタンス化します。

    contentText.setlayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1,1));

これらすべてのパラメーターで正確に何が起こっているかを見てみましょう。GridDataの : swt APIから、次のコンストラクターを使用しています。

    GridData(int horizontalAlignment, int verticalAlignment, boolean grabExcessHorizontalSpace, boolean grabExcessVerticalSpace, int horizontalSpan, int verticalSpan) 

よし、これでわかることは、contentText で水平方向と垂直方向の両方の配置に SWT.FILL パラメータを使用することです (オブジェクトが水平方向と垂直方向に均等に配置されるようにします)。可能な限り過剰な水平および垂直スペースを確保し、水平方向と垂直方向の両方で 1 つのグリッド要素にまたがるようにする必要があります。さて、これだけでは画面上の残りのすべてのコントロールを静的にオーバーライドして覆い隠すことはありませんが、サイズを変更すると、contentText にできるだけ多くの垂直方向のスペースを占めるように指示しています (水平方向に制限されています)。私が想像する同じコンポジット/グリッドレイアウト内の他のオブジェクトによって、そこにオーバーライドが表示されないのはそのためです)。

さて、これは、全体的なコンポジット/フォームの構造、およびどのオブジェクトがどのコンポジットに含まれているかなどによって引き起こされる可能性があります。小さな要因が物事を大きく狂わせます。ただし、さまざまなレイアウト データ コンストラクターを使用して、ユーザーに反対するのではなく、ユーザーのために機能する方法を学ぶことは、SWT の大きな利点です。レイアウトをより完全に理解するためにここを見て、実際に作成しているこれらのコンストラクターのすべてのパラメーターに注意を払ってください。多くの場合、完全な 6 パラメーターのコンストラクターは必要なく、他のオプションもあります。

幸運を!

于 2013-10-31T13:24:36.720 に答える