- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个程序,只需重新输入数据文件中的文本。该程序将一直运行,直到遇到第一个特殊字符。这是一个例子:
数据文件
嘿,怎么了?
我得到了什么
嘿,发生了什么(抛出非法参数异常)
这是我的代码:
public static void KeyPresser() throws FileNotFoundException, AWTException {
Robot robot = new Robot();
Scanner file = new Scanner(new File("script.dat"));
while(file.hasNext()) {
String word = file.nextLine();
for(int i = 0;i<word.length();i++) {
char c = word.charAt(i);
if (Character.isUpperCase(c)) {
robot.keyPress(KeyEvent.VK_SHIFT);
}
robot.keyPress(Character.toUpperCase(c));
robot.keyRelease(Character.toUpperCase(c));
if (Character.isUpperCase(c)) {
robot.keyRelease(KeyEvent.VK_SHIFT);
}
if(c=='?') {
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_SLASH);
robot.keyRelease(KeyEvent.VK_SLASH);
robot.keyRelease(KeyEvent.VK_SHIFT);
}
}
}
}
它会输入字母,但不会输入特殊字符?我必须使用很长的开关代码吗?或者有一个简单的解决办法吗?正如你所知,我尝试过使用
if(c=='?') {
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_SLASH);
robot.keyRelease(KeyEvent.VK_SLASH);
robot.keyRelease(KeyEvent.VK_SHIFT);
}
但这不起作用,我能做什么?
最佳答案
I am writing a program that simply retypes the text from the data file
为什么要使用机器人重新输入文本?为什么不能将文本插入到文本组件的文档中。
Am I gonna have to use a long switch code?
可以使用HashMap来映射需要与常规键进行移位的键:
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class RobotString extends JPanel
{
private static HashMap<Character, Character> keyMap = new HashMap<>();
private JTextField original;
private JTextField copy;
public RobotString()
{
setLayout( new BorderLayout() );
original = new JTextField(10);
add(original, BorderLayout.PAGE_START);
JButton button = new JButton("Use Robot");
add(button, BorderLayout.CENTER);
button.addActionListener((e) -> invokeRobot() );
copy = new JTextField(10);
add(copy, BorderLayout.PAGE_END);
// Create mapping of keys
keyMap.put('!', '1');
keyMap.put('@', '2');
keyMap.put('#', '3');
keyMap.put(':', ';');
keyMap.put('?', '/');
}
private void invokeRobot()
{
copy.requestFocusInWindow();
copy.setText( "" );
try
{
Robot robot = new Robot();
char[] letters = original.getText().toCharArray();
for(char letter: letters)
{
boolean shiftRequired = false;
Character value = keyMap.get(letter);
if (value != null)
{
shiftRequired = true;
letter = value;
}
else if (Character.isUpperCase(letter))
{
shiftRequired = true;
}
int keyCode = KeyEvent.getExtendedKeyCodeForChar( letter );
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(); }
}
private static void createAndShowGUI()
{
JFrame frame = new JFrame("SSCCE");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new RobotString());
frame.pack();
frame.setLocationByPlatform( true );
frame.setVisible( true );
}
public static void main(String[] args) throws Exception
{
java.awt.EventQueue.invokeLater( () -> createAndShowGUI() );
}
}
只需在顶部文本字段中输入文本字符串,然后单击按钮即可。请注意,它仅支持一些特殊字符。但请注意,这不是一个可靠的解决方案,因为映射取决于键盘。
我现在知道为所有键盘提供通用解决方案的方法。
关于java - 使用 Robot 类 Java 按键特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61471454/
我刚刚读到 JavaFX 有自己的 javafx.scene.robot.Robot类(class)。它与 java.awt.Robot 有何不同? ?我也不太明白为什么 Robot 类被打包在 ja
势场法是一种非常流行的机器人导航模拟。然而,有没有人在真正的机器人上实现过势场法?在真实机器人中使用该方法的任何引用或任何声明? 最佳答案 我之前做过基于潜在场的路径规划,但放弃了它,转而采用更合适的
任何人都可以在以下情况下解释正确的robots.txt命令。 我想允许访问: /directory/subdirectory/.. 但是我也想限制访问/directory/,尽管有上述异常(excep
假设我有一个测试文件夹 (test.domain.com) 并且我不希望搜索引擎在其中抓取,我是否需要在测试文件夹中有一个 robots.txt 或者我可以只放置一个 robots.txt在根目录中,
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
这个问题在这里已经有了答案: order of directives in robots.txt, do they overwrite each other or complement each ot
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 8年前关闭。 Improve this
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 7 年前。 Improv
我刚刚安装了 Microsoft Robotics Studio 2008 R2,我必须承认我很震惊地发现路径的处理方式。 第一个工作室想要将自己安装到我的个人资料中(这是在 Vista 上): C:
我只想允许目录 /minsc 中的一个文件,但我想禁止该目录的其余部分。 现在 robots.txt 中是这样的: User-agent: * Crawl-delay: 10 # Directorie
我正在编写一个将 youtube.com 映射到另一个域的代理服务器(因此用户可以轻松地从德国等国家/地区访问 youtube,而无需审查搜索结果和视频)。 不幸的是,我的 robots.txt 中存
我一直使用 robots.txt 文件阻止谷歌将我的网站编入索引。最近我读了一篇来自谷歌员工的文章,他说你应该使用元标记来做到这一点。这是否意味着 Robots.txt 不起作用?由于我使用的是 CM
我拥有一些在大学注册的网站空间。不幸的是,谷歌在该网站上找到了我的简历(简历),但错误地将其索引为学术出版物,这在谷歌学术上搞砸了引用计数之类的事情。我尝试上传 robots.txt进入我的本地子目录
我在不同的子域上托管了 dev.example.com 和 www.example.com。我希望爬虫删除 dev 的所有记录子域,但将它们保留在 www .我使用 git 来存储两者的代码,所以理想
我有此结构的链接: http://www.example.com/tags/等等 http://www.example.com/tags/ blubb http://www.example.com/t
http://plus.google.com/robots.txt具有以下内容: User-agent: * Disallow: /_/ 我假设这意味着搜索引擎可以索引根以外的第一层中的任何内容,而不
Google 网站站长工具中的我的 robots.txt 显示以下值: User-agent: * Allow: / 这是什么意思?我对此了解不够,所以寻求您的帮助。我想允许所有机器人抓取我的网站,这
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭11 年前。 Improve th
我只想允许主要 URL(域)和 http://domain/about,其他 URL 对搜索 google 不可见。示例我有如下链接: http://example.com http://exampl
我想禁止机器人抓取任何文件夹/子文件夹。 我想禁止 ff: http://example.com/staging/ http://example.com/test/ 这是我的 robots.txt 中
我是一名优秀的程序员,十分优秀!