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

Posted wenchunl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为org.eclipse.swt.widgets.Text 添加可点击的超链接相关的知识,希望对你有一定的参考价值。

可以为text, 也可以为label 添加可以点击的超链接。 代码如下:

package us63740.parts;

import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import org.eclipse.e4.ui.di.Focus;
import org.eclipse.e4.ui.di.Persist;
import org.eclipse.e4.ui.model.application.ui.MDirtyable;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
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.Label;
import org.eclipse.swt.widgets.Text;

public class SamplePart {

	private Text txtInput;
	private Label descLabel;
	private TableViewer tableViewer;
	private String urlString = "http://www.baidu.com/";

	@Inject
	private MDirtyable dirty;
	
    @PostConstruct
	public void createComposite(Composite parent) {
		parent.setLayout(new GridLayout(1, false));

		txtInput = new Text(parent, SWT.WRAP | SWT.READ_ONLY | SWT.BORDER | SWT.V_SCROLL);
		
		txtInput.addMouseListener(new MouseProcesser()); // add listener
		GridData gd = new GridData();
		gd.widthHint = 450;
		gd.heightHint =100;
		txtInput.setLayoutData(gd);
        txtInput.setText(urlString);
        
        createLable(parent);
		
		tableViewer = new TableViewer(parent);

		tableViewer.setContentProvider(ArrayContentProvider.getInstance());;
		tableViewer.setInput(createInitialDataModel());
		tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
	}

	private void createLable(Composite parent) {
	    descLabel = new Label(parent, SWT.WRAP | SWT.READ_ONLY | SWT.BORDER | SWT.V_SCROLL);
	    descLabel.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_BLUE));
	    descLabel.setCursor(Display.getCurrent().getSystemCursor(SWT.CURSOR_HAND));
	    
	    GridData gd = new GridData();
        gd.widthHint = 450;
        gd.heightHint =100;
        descLabel.setLayoutData(gd);
        
        descLabel.setText(urlString);
        
        descLabel.addMouseListener(new MouseProcesser()); // add listener
	    
	    
	    
	}
	
	private class MouseProcesser extends MouseAdapter {
	    
	    @Override
	    public void mouseDown(MouseEvent e) {
	        if (e.button == 1) { // 1 = left button clicked, 2 = middle button clicked, 3 = right button clicked.
	            try {
	                Desktop.getDesktop().browse(new URI(urlString));
	            } catch (IOException  | URISyntaxException e1) {
	                e1.printStackTrace();
	            }
	        }
	    }
	}

    @Focus
	public void setFocus() {
		tableViewer.getTable().setFocus();
	}

	@Persist
	public void save() {
		dirty.setDirty(false);
	}
	
	private List<String> createInitialDataModel() {
		return Arrays.asList("Sample item 1", "Sample item 2", "Sample item 3", "Sample item 4", "Sample item 5");
	}
}

 

以上是关于为org.eclipse.swt.widgets.Text 添加可点击的超链接的主要内容,如果未能解决你的问题,请参考以下文章

图形上下文导论(Introduction to SWT Graphics)zz

java,的组件如何将java的组件的背景设置透明?

错误:找不到常见的超类

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

将 A 转换为 1 B 转换为 2 ... Z 转换为 26,然后将 AA 转换为 27 AB 转换为 28(Excel 中列引用的列索引)

考试错题