java swing
JTextArea 本来是只读的,实现的效果是双击可以编辑,
按Esc 又变为只读
双击处理事件
resultTextArea.setEditable(false);
resultTextArea.setLineWrap(true);
resultTextArea.setWrapStyleWord(true);
resultTextArea.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
if (!resultTextArea.isEditable()) {
resultTextArea.setEditable(true);
DialogUtil.focusSelectAllTF(resultTextArea);
}
// System.out.println("Double Click!");
}
super.mouseClicked(e);
}
});
public static void focusSelectAllTF(JTextArea ta) {
ta.requestFocus();
if (!ValueWidget.isNullOrEmpty(ta.getText())) {
ta.selectAll();
}
}
按Esc的监听事件
/***
* 按Esc 文本框失去焦点
* @param tf
*/
public static void addKeyListener22(final JTextComponent tf){
addKeyListener22(tf, null);
}
/***
* 按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)){
tf2.requestFocus();
tf2.selectAll();
}
}
}
});
}
/**
* 判断对象或对象数组中每一个对象是否为空: 对象为null,字符序列长度为0,集合类、Map为empty
*
* @param obj
* @return
*/
public static boolean isNullOrEmpty(Object obj) {
if (obj == null)
return true;
if (obj instanceof CharSequence)
return ((CharSequence) obj).length() == 0;
if (obj instanceof Collection)
return ((Collection) obj).isEmpty();
if (obj instanceof Map)
return ((Map) obj).isEmpty();
if (obj instanceof Object[]) {
Object[] object = (Object[]) obj;
if (object.length == 0) {
return true;
}
boolean empty = true;
for (int i = 0; i < object.length; i++) {
if (!isNullOrEmpty(object[i])) {
empty = false;
break;
}
}
return empty;
}
return false;
}
附件运行方式:
java -jar share-0.0.3.1-SNAPSHOT.jar
前提:电脑安装java环境
运行界面: