如何在 SWT Table 的列中添加超链接?

Posted

技术标签:

【中文标题】如何在 SWT Table 的列中添加超链接?【英文标题】:How to add Hyperlink in SWT Table`s column? 【发布时间】: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

【问题讨论】:

【参考方案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;

【讨论】:

以上是关于如何在 SWT Table 的列中添加超链接?的主要内容,如果未能解决你的问题,请参考以下文章

R Shiny DataTable如何防止包含超链接的列中的行选择/取消选择

将超链接添加到 DataTables 中的列

如何将列中的超链接插入Outlook电子邮件正文

为org.eclipse.swt.widgets.Text 添加可点击的超链接

如何在html中添加的图片上设置超链接

超链接