Windows 7 では、ネイティブ テーブル ヘッダー コンポーネントのように見える SWT コンポーネントを作成する方法を見つけようとしています。
ネイティブ コンポーネントと同じホバー動作も実現したいと考えています。
1 つの列を持つ実際のテーブルを使用することを考えましたが、ヘッダーだけでコンポジット全体を埋めることができませんでした。そのために私が取り組んできたコードは次のとおりです。
package widgets;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.StyledCellLabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.jface.viewers.ViewerCell;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class TableHeaderButton extends Composite {
public TableHeaderButton(Composite parent) {
super(parent, SWT.NONE);
this.setLayout(new GridLayout(1, true));
makeTable(this);
}
private static TableViewer makeTable(Composite parent) {
TableViewer viewer = new TableViewer(parent, SWT.FULL_SELECTION
| SWT.H_SCROLL | SWT.V_SCROLL | SWT.NONE);
viewer.setContentProvider(ArrayContentProvider.getInstance());
viewer.getTable().setLayoutData(
new GridData(SWT.FILL, SWT.FILL, false, false));
TableViewerColumn col = new TableViewerColumn(viewer, SWT.NONE);
col.getColumn().setWidth(100);
col.getColumn().setText("Text Column");
viewer.getTable().setHeaderVisible(true);
return viewer;
}
public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, true));
new TableHeaderButton(shell);
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
どんな助けでも大歓迎です。