swing 文本框双击Ctrl,触发删除全部并黏贴

java swing 文本框双击Ctrl,触发删除全部并黏贴

tc.addKeyListener(new KeyListener() {
            private long lastTimeMillSencond;

            @Override
            public void keyTyped(KeyEvent e) {
            }

            @Override
            public void keyReleased(KeyEvent e) {
            }

            @Override
            public void keyPressed(KeyEvent e) {
                if (EventHWUtil.isJustCtrlDown(e)) {
                    if (lastTimeMillSencond == 0) {
                        lastTimeMillSencond = System.currentTimeMillis();
                    } else {
                        long currentTime = System.currentTimeMillis();
                        if (MenuUtil2.isDoubleClick(currentTime - lastTimeMillSencond)) {
                            System.out.println("双击Ctrl");
                            String content = WindowUtil.getSysClipboardText();
                            if (ValueWidget.isNullOrEmpty(content)) {
                                return;
                            }
                            tc.setText(content);
                            tc.requestFocus();
                            lastTimeMillSencond = 0;
                        } else {
                            lastTimeMillSencond = System.currentTimeMillis();
                        }
                    }
                }
            }
        });

见类: com/swing/component/TextCompUtil2.java

 

如何判断是否点击了Ctrl 呢?

public static boolean isJustCtrlDown(KeyEvent e) {
        int keyCode = e.getKeyCode();
        return e.isControlDown() && keyCode != KeyEvent.VK_TAB
                && keyCode != KeyEvent.VK_QUOTE/*双引号*/
                && keyCode != KeyEvent.VK_OPEN_BRACKET/*{*/
                && keyCode != KeyEvent.VK_CLOSE_BRACKET/*}*/
                && keyCode != KeyEvent.VK_COLON/*分号*/
                && keyCode != KeyEvent.VK_PERIOD/*句号*/
                && keyCode != KeyEvent.VK_COMMA/*逗号*/
                && keyCode != KeyEvent.VK_AT/*@*/
                && keyCode != KeyEvent.VK_2/*@*/
                && keyCode == KeyEvent.VK_CONTROL;
    }

 见类:com/swing/event/EventHWUtil.java

 

鼠标中间也是:删除全部并黏贴

 /***
     * 给文本框增加右键菜单.
     * 
     * @param field2
     */
    public static JPopupMenu setPopupMenu(final JTextComponent field2,JPopupMenu textMenu1)
    {
    	final JPopupMenu textMenu;
    	if(ValueWidget.isNullOrEmpty(textMenu1)){
        	textMenu = new JPopupMenu();
        }else{
        	textMenu=textMenu1;
        }
        field2.addMouseListener(new MouseInputListener()
        {
            @Override
            public void mouseMoved(MouseEvent e)
            {

            }

            @Override
            public void mouseDragged(MouseEvent e)
            {

            }

            @Override
            public void mouseReleased(MouseEvent e)
            {
                //                super.mousePressed(e);
                if (e.getButton() == MouseEvent.BUTTON3)
                {
//                	addPopupMenuItem(field2,textMenu);
                    textMenu.show(e.getComponent(), e.getX(), e.getY());
                }else if (e.getButton() == MouseEvent.BUTTON2){//鼠标中键
                	//按下鼠标中键,把剪切板内容黏贴到文本框中
                	String text=WindowUtil.getSysClipboardText();
                	if(!ValueWidget.isNullOrEmpty(text)
                			&&!ValueWidget.isNullOrEmpty(field2)){
                		field2.setText(text);
                		field2.setForeground(TextCompUtil2.DEFAULT_TF_FOREGROUND);//防止placeholder
                		field2.requestFocus();
                	}
                }
            }

            @Override
            public void mousePressed(MouseEvent e)
            {
            }

            @Override
            public void mouseExited(MouseEvent e)
            {
            }

            @Override
            public void mouseEntered(MouseEvent e)
            {
            }

            @Override
            public void mouseClicked(MouseEvent e)
            {
            }
        });
        return textMenu;
    }

 

见类:com/swing/menu/MenuUtil2.java

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值