java swing
如何實現文本域雙擊變為可編輯呢?
給文本域添加鼠標事件監聽程序即可:
resultTA1=new AssistPopupTextArea();
resultTA1.setEditable(false);
resultTA1.setLineWrap(true);
resultTA1.setWrapStyleWord(true);
resultTA1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
if (!resultTA1.isEditable()) {
resultTA1.setEditable(true);
DialogUtil.focusSelectAllTF(resultTA1);
resultTA1.requestFocus();
}
}
super.mouseClicked(e);
}
});
按Esc 鍵變為只讀(不可編輯)
/***
* 按Alt+Enter時,用戶名文本框聚焦,
按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();
}
}
}
});
}
調用:
DialogUtil.addKeyListener22(resultTA1);
注意:
(1)e.getClickCount() == 2 表示雙擊,即短時間間隔之內連續點擊兩次;
(2)e.getKeyCode() == KeyEvent.VK_ESCAPE 表示按下Esc 鍵
參考:
外鏈網址已屏蔽
外鏈網址已屏蔽
外鏈網址已屏蔽