1.SWTTools类中getShortText()方法
第一个参数GC方法,第二个参数文字内容,第三个参数想要显示长度,只要超出这个长度就会用…显示
public static String getShortText(GC gc, String title, int width) {
String titleString;
for (int i = 6; i < title.length(); i++) {
titleString = title.substring(0, i) + "...";
Point pt = gc.textExtent(titleString);
if (pt.x + titleString.length() >= width) {
return titleString;
}
}
titleString = title;
return titleString;
}
实战例子
在接口中调用要开启线程Display.getDefault().syncExec(new Runnable() {});,UI改动只能在主线程中改动,有改动最后要redraw去重新绘制。
if (!TextUtils.isEmpty(userInfo.getDuty())) {
GC dutyGC = new GC(duty);
duty.setText(SWTTools.getShortText(dutyGC, userInfo.getDuty(), 440));
Point pt = new Point(0, 0);
pt.x = dutyGC.stringExtent(duty.getText()).x + UIConstant.Label_MARGIN;
pt.y = dutyGC.stringExtent(duty.getText()).y + UIConstant.Label_MARGIN;
duty.setBounds(MARGIN, 159, pt.x + 24, 28);
duty.setToolTipText(COPY_TIP);
duty.addMouseListener(mouseListener);
dutyGC.dispose();
duty.redraw();
}
2.双击复制的实现
开始要定义个变量 private final String COPY_TIP = “双击复制”;使用setToolTipText()方法可以使鼠标停留时显示文字内容,最后添加鼠标监听事件addMouseListener(),里面有mouseDoubleClick()双击的方法。最后就是实现双击复制的逻辑。
private MouseListener mouseListener = new MouseListener() {
@Override
public void mouseUp(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseDown(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseDoubleClick(MouseEvent arg0) {
// TODO Auto-generated method stub
Label text = (Label)arg0.widget;
if (text != null && !TextUtils.isEmpty(text.getText())) {
TextTransfer textTransfer = TextTransfer.getInstance();
Clipboard board = new Clipboard(null);
Object[] datas = new Object[1];
Transfer[] types = new Transfer[1];
String textData = text.getText();
datas[0] = textData;
types[0] = textTransfer;
board.setContents(datas, types);
}
}
};