PC端 SWTTools.getShortText()方法使用 字符缩略...显示,双击复制实现

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);

            }
        }
    };
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十壹、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值