1我想实现如下效果:
文本框默认是置灰的,不可编辑,双击变为可编辑,按Esc又恢复为不可编辑.
实现:
//双击变为可以编辑 portTextField.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { if (!portTextField.isEditable()) { portTextField.setEditable(true); DialogUtil.focusSelectAllTF(portTextField); } // System.out.println("Double Click!"); } super.mouseClicked(e); } }); DialogUtil.addKeyListener22(portTextField);
DialogUtil.addKeyListener22方法实现:
/*** * 按Alt+Enter时,用户名文本框聚焦,<br>按Esc 文本框失去焦点 * @param tf :密码输入框 */ public static void addKeyListener22(final JTextComponent tf,final JTextComponent tf2){ tf.addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent e) { } @Override public void keyReleased(KeyEvent e) { } @Override public void keyPressed(KeyEvent e) { if ((e.getKeyCode() == KeyEvent.VK_ESCAPE) ) { System.out.println("esc"); tf.setEditable(false); }else if ((e.getKeyCode() == KeyEvent.VK_ENTER) && (((InputEvent) e ) .isAltDown())) { if(!ValueWidget.isNullOrEmpty(tf2)){ if (!tf2.isEditable()) { tf2.setEditable(true); } tf2.requestFocus(); tf2.selectAll(); } } } }); } /*** * 按Esc 文本框失去焦点 * @param tf */ public static void addKeyListener22(final JTextComponent tf){ addKeyListener22(tf, null); }
双击前:
双击后: