在使用tableEditor时,想在每行的后面加上button(编辑按钮),但是发现展示的时候始终不好--(始终漂浮在第一列的上面,需要改变下列的宽度才可以正确的显示),但是当改变窗口大小时又回复到最开始的界面。
代码:
public class InitUserItem implements Runnable {
private Table table; private TableItem item; private Vector datas; private int style; public InitUserItem(Table table, Vector datas, int style) {
this.table = table;
this.datas = datas;
this.style = style; } public void run() {
table.getDisplay().asyncExec(new Runnable() {
public void run() {
for (Iterator iter = datas.iterator(); iter.hasNext();) {
UserItemVO element = (UserItemVO) iter.next();
item = new TableItem(table, style);
item.setData(element);
item.setText(new String[] { element.getId(), element.getName(), element.getDept(),element.getPhone()});        TableEditor editor = new TableEditor(table);
        Button edit_button = new Button(table,SWT.NONE);
        button_edit.setText("编辑");
        editor.setEditor(edit_button,item,4);
}
}
}); }}不管放在哪一列都一样,始终存在这样的问题,不知道各位遇到个这样的问题没?

解决方案 »

  1.   

    试试加入这段code 
    final Table table = tv.getTable(); 
            
    table.addListener(SWT.MeasureItem, new Listener() {    //向表格增加一个SWT.MeasureItem监听器,每当需要单元内容的大小的时候就会被调用。 
        public void handleEvent(Event event) { 
            event.width = table.getGridLineWidth();    //设置宽度 
            event.height = (int) Math.floor(event.gc.getFontMetrics().getHeight() * 1.5);    //设置高度为字体高度的1.5倍 
        }});