为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
将 A 转换为 1 B 转换为 2 ... Z 转换为 26,然后将 AA 转换为 27 AB 转换为 28(Excel 中列引用的列索引)