如何自定義SWT Table的每一個Cell的height and width
demonstration code:
Display display = new Display(); Shell shell = new Shell(display); shell.setBounds(10,10,200,250); final Table table = new Table(shell, SWT.NONE); table.setBounds(10,10,150,200); table.setLinesVisible(true); for (int i = 0; i < 5; i++) { new TableItem(table, SWT.NONE).setText("item " + i); } table.addListener(SWT.MeasureItem, new Listener() { public void handleEvent(Event event) { int clientWidth = table.getClientArea().width; event.height = event.gc.getFontMetrics().getHeight() * 2; event.width = clientWidth * 2; } }); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose();
說明:黑體部分是關鍵,主要是要為table添加一個監聽器并要用到SWT.MeasureItem屬性,如果是在TableView下則需要調用TableView#getTable()方法獲得Table再添加監聽器。
還需要注意的是:
1)這個特性可能只在Eclipse3.2以上的版本中才有。
2)不能對單行(Item)進行height的設置。
3)如果設置了width,則column的width以它為準。
參考文章:[[1]]http://www.eclipse.org/articles/Article-CustomDrawingTableAndTreeItems/customDraw.htm#_tb10D
posted on 2008-02-03 16:26 花開有時 閱讀(2411) 評論(1) 編輯 收藏 所屬分類: Eclipse