Java Swing 实现虚拟键盘(输入特殊字符)

Java Swing 实现虚拟键盘

由于业务需求需要实现一个虚拟键盘,要求能输入一些特殊字符,例如:!、#、 $、…、『、』等。
效果图:

小写输入
在这里插入图片描述
大写输入
在这里插入图片描述
特殊字符输入
在这里插入图片描述
由于特殊字符在KeyEvent中没有特定key值,所以在使用robot模拟输入的时候会报错,我这里的实现方式是自定义一些特殊字符,然后将点击的特殊字符插入到输入框中:

// 自定义按键
    enum CustomKey {
        SYMBOL(1000, "symbol"),
        CONFIRM(1001, "confirm"),
        S_FIRST_ONE(1002, "!"),
        S_FIRST_TWO(1003, "@"),
        S_FIRST_THREE(1004, "#"),
        S_FIRST_FOUR(1005, "$"),
        S_FIRST_FIVE(1006, "%"),
        S_FIRST_SIX(1007, "^"),
        S_FIRST_SEVEN(1008, "&"),
        S_FIRST_EIGHT(1009, "*"),
        S_FIRST_NINE(1010, "("),
        S_FIRST_TEN(1011, ")"),
        S_SECOND_ONE(1012, ","),
        S_SECOND_TWO(1013, "."),
        S_SECOND_THREE(1014, "-"),
        S_SECOND_FOUR(1015, "_"),
        S_SECOND_FIVE(1016, ":"),
        S_SECOND_SIX(1017, ";"),
        S_SECOND_SEVEN(1018, "["),
        S_SECOND_EIGHT(1019, "]"),
        S_SECOND_NINE(1020, "{"),
        S_SECOND_TEN(1021, "}"),
        S_THIRD_ONE(1022, "·"),
        S_THIRD_TWO(1023, "…"),
        S_THIRD_THREE(1024, "~"),
        S_THIRD_FOUR(1025, "|"),
        S_THIRD_FIVE(1026, "\\"),
        S_THIRD_SIX(1027, "/"),
        S_THIRD_SEVEN(1028, "?"),
        S_THIRD_EIGHT(1029, "<"),
        S_THIRD_NINE(1030, ">"),
        S_FOURTH_ONE(1031, "+"),
        S_FOURTH_TWO(1032, "-"),
        S_FOURTH_THREE(1033, "="),
        S_FOURTH_FOUR(1034, "¥"),
        S_FOURTH_FIVE(1035, "∏"),
        S_FOURTH_SIX(1036, "『"),
        S_FOURTH_SEVEN(1037, "』"),
        CLEAR(1038, "clear");

        private Integer key;
        private String value;

        CustomKey(int key, String value) {
            this.key = key;
            this.value = value;
        }

        public Integer getKey() {
            return key;
        }

        public void setKey(Integer key) {
            this.key = key;
        }

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }
    }

如果是正常的键盘按键直接通过robot模拟输入

  robot.keyPress(key);
  robot.keyRelease(key);

如果是特殊字符则将字符插入JTextField中

  try {
      // 在光标位置插入点击的字符
      textField.getDocument().insertString(textField.getCaretPosition(), kb.getText(), null);
  } catch (Exception e2) {
      e2.printStackTrace();
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值