【问题标题】:How to add Hyperlink in SWT Table`s column?如何在 SWT Table 的列中添加超链接?
【发布时间】:2011-10-22 08:06:02
【问题描述】:

如何在 SWT Table 列中添加超链接? 我正在使用 org.eclipse.swt.widgets.Table 类。

有什么方法可以在不使用 TableViewer、JFace 的情况下做到这一点?

我尝试过这种方式但不能正常工作(不显示超链接)。

for(int i=2; i<4; i++){ 
Hyperlink link = new Hyperlink(table, SWT.WRAP); 
link.setText(temp[i]); 
link.setUnderlined(true);
TableEditor editor = new TableEditor(table); 
editor.setEditor(link, tableItem[index-1], i); //set hyperlinks in column i
}

【问题讨论】:

    标签: java eclipse swt


    【解决方案1】:

    下面是使用带有 LabelProvider 的 TableView 绘制超链接的一种方法,如 Tonny Madsen 的回答中所述。

    下面的代码只是绘制超链接。

        TableViewerColumn column = ...
        column.setLabelProvider( new MyHyperlinkLabelProvider( tableViewerFiles.getTable() ));
    
    private final class MyHyperlinkLabelProvider extends StyledCellLabelProvider {
        MyHyperlink m_control;
    
        private MyHyperlinkLabelProvider( Composite parent ) {
            m_control = new MyHyperlink( parent, SWT.WRAP );
        }
    
        @Override 
        protected void paint( Event event, Object element ) {
            String sValue = ... [Get cell value from row element]
            m_control.setText( sValue );
    
            GC gc = event.gc;
            Rectangle cellRect = new Rectangle( event.x, event.y, event.width, event.height );
            cellRect.width = 4000;
    
            m_control.paintText( gc, cellRect);
        }
    }
    
    private class MyHyperlink extends Hyperlink {
        public MyHyperlink(Composite parent, int style) {
            super(parent, style);
            this.setUnderlined(true);
        }
    
        @Override
        public void paintText(GC gc, Rectangle bounds) {
            super.paintText(gc, bounds);
        }
    }
    

    【讨论】:

      【解决方案2】:

      是的,这当然是可能的。为此,您必须实现 SWT.ItemPaint(也可能还有 SWT.ItemEraseSWT.ItemMeassure)。

      如果你使用正确的LabelProviderTableView 会更容易...

      【讨论】:

        【解决方案3】:

        你需要设置编辑器的大小:

        editor.grabHorizontal = true;
        //or
        editor.minimumWidth = 50;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-08-07
          • 1970-01-01
          • 2015-08-09
          • 2015-06-23
          • 1970-01-01
          • 2010-10-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多