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

扫描二维码关注公众号,回复: 590381 查看本文章

猜你喜欢

转载自hw1287789687.iteye.com/blog/2319821
今日推荐