java-如何确定字符是否需要按下Shift键才能输入?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-如何确定字符是否需要按下Shift键才能输入?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1852字,纯文字阅读大概需要3分钟。
内容图文
![java-如何确定字符是否需要按下Shift键才能输入?](/upload/InfoBanner/zyjiaocheng/651/71124a76951745278a80a98787ac5d5d.jpg)
我正在编写一些代码以使用Robot类键入字符串.一切基本都很好(嗯,我必须使用一个大的switch语句来获取字符键码),除了一些键没有键码,因为它们实际上是Shift键和其他键的组合.对于大写字母,使用Character.isUpperCase(c)易于检查,但是对于所有符号,例如!@#$%^& *()_和各种标点符号,尽管它们将被视为“大写”确实需要按下shift键才能产生击键.我尝试使用Google搜索,但是发现论坛帖子没有令人满意的答案.是否有任何方法可以确定某个字符是否需要按下才能移动,如果需要,那么“未移动”版本是哪个字符?
编辑:这是我到目前为止的代码.
public void GenerateKeyTyped(char c) {
if (Character.isUpperCase(c)) {
r.keyPress(KeyEvent.VK_SHIFT);
}
r.keyPress(GetKeyCode(c));
r.keyRelease(GetKeyCode(c));
if (Character.isUpperCase(c)) {
r.keyRelease(KeyEvent.VK_SHIFT);
}
}
解决方法:
我不知道直接解决您的问题的方法(我最终为那些字符使用了Map),但是它可能会给您一些想法:
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Main3 {
public static void main(String[] args) {
try {
Robot robot = new Robot();
HashMap<String, String> map = new HashMap<String, String>();
map.put("!", "1");
map.put("@", "2");
map.put("#", "3");
char[] charz = "abcdefgABCDEFG123!#".toCharArray();
for(int i = 0; i < charz.length; i++)
{
System.out.print(charz[i] + " : ");
boolean shiftRequired = false;
String key = String.valueOf(charz[i]);
String value = map.get(key);
if (value != null)
{
shiftRequired = true;
key = value;
}
else if (Character.isUpperCase(key.charAt(0)))
{
shiftRequired = true;
}
else
{
key = key.toUpperCase();
}
KeyStroke ks = KeyStroke.getKeyStroke("pressed " + key.toUpperCase());
int keyCode = ks.getKeyCode();
System.out.println(keyCode);
if (shiftRequired)
robot.keyPress(java.awt.event.KeyEvent.VK_SHIFT);
robot.keyPress( keyCode );
robot.keyRelease( keyCode );
if (shiftRequired)
robot.keyRelease(java.awt.event.KeyEvent.VK_SHIFT);
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
内容总结
以上是互联网集市为您收集整理的java-如何确定字符是否需要按下Shift键才能输入?全部内容,希望文章能够帮你解决java-如何确定字符是否需要按下Shift键才能输入?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。