2017-05-29 13 views
0

アプリケーションウィンドウの右上隅にあるWindows 7またはWindows 10の最大化ボタンをクリックすると、E4 RCPアプリケーションが最大化されるタイミングを待ち受けます。最終的には、私のTreeViewerレイアウトのサイズが変更されたときにTreeColumnsのサイズを変更したいと思います。ツリーのサイズの変更をリッスンするtreeViewerにあるリスナーがあります。これはcontrolResized(ControlEvent e)メソッドを使用してControlListenerを使用します。これは、アプリケーションのウィンドウのサイズ変更をクリックしてドラッグするだけでうまくいきます。しかし、最大化ボタンをクリックするとレイアウトのサイズが変わり、列は変わりません。私はリスナーが遅すぎると思うし、最大化/最大化解除で再描画が発生する前にサイズ変更が検出されない。E4 RCPアプリケーション最大化またはUnMaximizeを聞きます

また、IconifyでListenerを使用してメソッドを解凍しようとすると、MinimizeとUn-Minimizeを処理するのでここでは機能しません。

また、IPartListenerを使用してアクティビティや表示などを試してみましたが、これはサイズ変更された場所でも発生しますが、同じ問題のように正しく再描画するためには適切なタイミングでトリガしません。

私が本当に欲しいのは、画面を最大化し、レイアウトのサイズ(私がやっていると思ったもの)をチェックし、それに応じて列のサイズを計算するソリューションです。ただし、最大化または非最大化をクリックするとトリガされず、ドラッグとサイズ変更でのみ成功します。たぶん、私はここで行方不明になっているかもしれません。事前におかげさまでありがとうございます。

  • マーヴ
+0

をあなたはいつもちょうど ')' Control.redraw(呼び出すことができます再描画が必要です。 –

+0

'TreeColumnLayout'を' ColumnWeightData'と一緒に使うと、レイアウトは自動的にすべてのサイズ変更を処理するはずです。 –

答えて

0

親切グレッグ-449をありがとう!ここで作業しています....

ツリーが作成されるクラスでは、TreeColumnLayoutを使用し、列が作成される場所はTreeColumnLayoutにColumnWeightDataを使って渡されます。 (以前に書かれた他のリスナーをすべて削除して、コンフリクトを起こして正しく動作しないようにする必要があります)

私の状況では、「ラッパー」コンポジットを使用してCheckboxTreeViewerを配置しました以下のように):

Composite wrapper = new Composite(parent, SWT.NONE); 

new CheckboxTreeViewer(wrapper, SWT.H_SCROLL | SWT.V_SCROLL | SWT.CHECK | SWT.BORDER | SWT.FULL_SELECTION); 

TreeColumnLayout tcLayout = new TreeColumnLayout(); 

wrapper.setLayout(tcLayout); 

としては、先に述べた、私は体重、最小サイズ、およびColumnWeightDataのサイズ変更可能な属性を設定し、ツリー内のすべての列の作成にTreeColumnLayoutを使用しています。

final TreeColumn column = viewerColumn.getColumn(); 
tcLayout.setColumnData(column, new ColumnWeightData(weight, minimumSize, resizable)); 

...これは他の人を助けここTreeColumnLayoutとColumnWeightDataの他の例の

たっぷり詳述ことを願っています:あなたが考える場合http://www.programcreek.com/java-api-examples/index.php?api=org.eclipse.jface.layout.TreeColumnLayout

関連する問題