jface tableViewerを使用しています。テーブルにデータがない場合、すべての列が正しく表示されますが、データがテーブルに追加されると、表。テーブル最後に余分な空白の列が表示されます
答えて
は私が... ..日食がWONTFIXとしてそれをマークしていたので、TPそれと一緒に暮らすいるこのspace..Weを削除するには多くを行うことはできません:)
ちょうど推測します。おそらく、列がすべての表を埋めるようにリサイズされないのでしょうか? どのようにして列の幅を設定しますか? テーブルコンテナにTableColumnLayoutを使用することを検討してください。
をWindowsでは、常に余分な列を取得します/行。設定されているすべての列の正味の幅が表の次元よりも小さい場合。だから、あなたのテーブルをテーブルに合わせるのに常に良いことです。また、スクロールバーにはスペースが残っていますが、これについてはあまりよく分かりませんが、縦スクロールバーと横スクロールバーのどちらを指定するのが良いかを指定してください。
私はTreeViewer + TreeViewerColumnを使用して、この回避策があまりにもあなたのTableViewerのために働くかもしれない、あまりにもこの問題を抱えています:
treeViewer.getTree().addControlListener(new ControlAdapter() {
public void controlResized(ControlEvent e) {
packAndFillLastColumn();
}
});
アクションが
である:プログラムで、親のサイズ変更に最後の列のサイズを設定// Resize last column in tree viewer so that it fills the client area completely if extra space.
protected void packAndFillLastColumn() {
Tree tree = treeViewer.getTree();
int columnsWidth = 0;
for (int i = 0; i < tree.getColumnCount() - 1; i++) {
columnsWidth += tree.getColumn(i).getWidth();
}
TreeColumn lastColumn = tree.getColumn(tree.getColumnCount() - 1);
lastColumn.pack();
Rectangle area = tree.getClientArea();
Point preferredSize = tree.computeSize(SWT.DEFAULT, SWT.DEFAULT);
int width = area.width - 2*tree.getBorderWidth();
if (preferredSize.y > area.height + tree.getHeaderHeight()) {
// Subtract the scrollbar width from the total column width
// if a vertical scrollbar will be required
Point vBarSize = tree.getVerticalBar().getSize();
width -= vBarSize.x;
}
// last column is packed, so that is the minimum. If more space is available, add it.
if(lastColumn.getWidth() < width - columnsWidth) {
lastColumn.setWidth(width - columnsWidth);
}
}
私にとってはうまく機能します。列のサイズを偽に設定したい場合があります.-)最後の列のデータが変更されたとき(垂直スクロールバーの挿入/削除)にも呼び出すことができます。
なぜそれがリスナーにありますか? – CodyBugstein
これは、ツリーコンポーネントのサイズ変更時に再計算する必要があるためです。 – ThomasRS
'テーブル 'でうまく働いた。ありがとう – CodyBugstein
私はpackAndFillLastColumn()
メソッドを使用していましたが、それは私のために働いていました。しかし、私は1つの問題を発見した。私のテーブルは境界線で作成されました。 packAndFillLastColumn()
メソッドを使用した後、行の境界線は存在しなくなりました。 packAndFillLastColumn()
メソッド内でsetLinesVisible(true)
メソッドを使用しましたが、それでも動作しません。
ありがとうThomas。 TableViewerとTableColumnを使用していましたが、あなたの考えは私のためにも働いていました。
他人がヒントを取れるように自分のコードを引用してください。
`public void controlResized(ControlEvent e) {
if (listOfTableColumns.size() != colProportions.length)
{
logger.warn("Number of columns passed and size of column proportions array are different. " +
"Columns resizing shall not be effective on GUI window resizing");
return;
}
Rectangle area = tableBaseComposite.getClientArea();
Point size = theTable.computeSize(SWT.DEFAULT, SWT.DEFAULT);
ScrollBar vBar = theTable.getVerticalBar();
int width = area.width - theTable.computeTrim(0,0,0,0).width - vBar.getSize().x;
if (size.y > area.height + theTable.getHeaderHeight()) {
// Subtract the scrollbar width from the total column width
// if a vertical scrollbar will be required
Point vBarSize = vBar.getSize();
width -= vBarSize.x;
}
Point oldSize = theTable.getSize();
if (oldSize.x > area.width) {
// table is getting smaller so make the columns
// smaller first and then resize the table to
// match the client area width
int index = 0 ;
for (Iterator<TableColumn> iterator = listOfTableColumns.iterator(); iterator.hasNext();)
{
TableColumn column = iterator.next();
column.setWidth((int) numberFromPercentage(width, colProportions[index++]));
}
listOfTableColumns.get(listOfTableColumns.size() - 1).pack();
theTable.setSize(area.width, area.height);
} else {
// table is getting bigger so make the table
// bigger first and then make the columns wider
// to match the client area width
int index = 0;
theTable.setSize(area.width, area.height);
for (Iterator<TableColumn> iterator = listOfTableColumns.iterator(); iterator.hasNext();)
{
TableColumn column = iterator.next();
column.setWidth((int) numberFromPercentage(width, colProportions[index++]));
}
listOfTableColumns.get(listOfTableColumns.size() - 1).pack();
}
}`
ここにstatmentの配置に関する問題があります。 listOfTableColumns.get(listOfTableColumns.size() - 1).pack(); しばらくコードを修正してください –
まだ修正しましたか? – CodyBugstein
いいえ時間を得られなかった –
シンプル! createContents関数内のテーブルコマンドで次の行を削除してください。
table.getColumn(i).pack();
グッド運
末尾に余分な不要な列空間を除去するための複雑なハックのための必要性無し...
だけのColumnLayoutを作成します。
TableColumnLayout columnLayout = new TableColumnLayout();
してから各列に設定します。
columnLayout.setColumnData(YOUR_VIEWER_COLUMN1.getColumn(), new ColumnPixelData(200));
columnLayout.setColumnData(YOUR_VIEWER_COLUMN2.getColumn(), new ColumnWeightData(200, 100));
は最後に、あなたの親コンポジットにレイアウトを設定:
parent.setLayout(columnLayout);
全サンプル:
回避策の使用などpublic void createPartControl(Composite parent) {
TableViewer viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
TableViewerColumn keyColumn = new TableViewerColumn(viewer, SWT.LEFT);
TableViewerColumn valueColumn = new TableViewerColumn(viewer, SWT.LEFT);
TableColumnLayout columnLayout = new TableColumnLayout();
columnLayout.setColumnData(keyColumn.getColumn(), new ColumnPixelData(200));
columnLayout.setColumnData(valueColumn.getColumn(), new ColumnWeightData(200, 100));
parent.setLayout(columnLayout);
}
:treeViewerのコンポジットおよび使用して各列の適切な列のデータを設定するための
-For列
使用TableColumnLayout: 「tableColumnLayout.setColumnData(列、新しいColumnWeightDataを(...あなたの要件に応じて)); " treeViewerの複合と "gridData.heightHint = table.getItemHeight()* numberOfVisibleRows"
- 1. 余分な空白がIE8でのみ表示されます
- 2. Androidテーブルの最後のボタンが半分表示されます
- 3. 余分な空白行
- 4. 厳密なモードで画像の後ろに不思議な余白/余白が表示される
- 5. 余白が下半分のグリッドに表示されるときにグリッド項目が表示されない
- 6. DataTableの下に余分な空白があります
- 7. JQueryダイアログにロードすると余分な空白が表示されるチェックボックスのラベル。
- 8. MySQLクエリの後、行に空白の値が表示される
- 9. テキストファイルの送信後に空白行が表示される
- 10. Android Webviewの余分な空白
- 11. UITableCellクリック後に空白が表示される
- 12. Graphics.MeasureStringが余分な空白を許容します
- 13. 奇妙なブラウザ/ ajaxエラー:余分な迷惑メールは、Firefoxのjavascriptファイルの最後に表示されます
- 14. 余分なボタンが表示され続けます
- 15. jsonの文字列が空白で表示されていますなぜ
- 16. Firefoxが実行されず、空白が表示されない
- 17. 余白が0に設定されている場合、余白が空白になる
- 18. WordPressのHTMLタイトルに余分な文字が表示される
- 19. IEテーブルの最初の列の空白
- 20. Syntaxhighlighter各行の後に余分な空白行を挿入する
- 21. ウェブページの上部に空白が表示されます
- 22. なぜPythonプログラムの出力に余分な空白行がありますか?
- 23. IE7とIE8で列/余白が正しく表示されない
- 24. 私のカスタムJDialogが表示されますが、空白です
- 25. 表示最後に空白を確認したときの文字列
- 26. 空白:プレラップで余分なスペースが発生する
- 27. テキストの後に余白/空白を追加する
- 28. UICollectionViewControllerが空白/黒色に表示されます
- 29. テーブルに表示されている余分な列を追加しています。
- 30. なぜsedコマンドラインに表示される "コマンド後の余分な文字"エラーが表示されますか?以下に示すよう
を使用して、高さのヒントを提供し、私は日食がWONTFIXとしてそれをマークしていたに
-For行
設定GridDataに...そうこのスペースを取り除くために多くを行うことはできません... –
余分な空白行が下部にもあります。これは、垂直と水平のスクロールバーのスペースを確保する方法のようです。 – CodyBugstein