【问题标题】:Trying to get a Robot keypress from reading a text field in Java试图通过读取 Java 中的文本字段来获取机器人按键
【发布时间】:2012-02-07 10:20:27
【问题描述】:

所以,我基本上想在文本字段中输入一个字母,然后让机器人响应并输入按键。我已经按照我想象的方式编写了这段代码,但它没有,而且我有点想不通。

package robottest;

import java.awt.AWTException; 
import java.awt.Robot; 
import java.awt.event.KeyEvent;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class RobotTest extends JFrame
{
    JTextField bookIDText;

public RobotTest()
{
    try
    {
    Robot robot = new Robot(); 
    bookIDText = new JTextField ();
    this.add(bookIDText);
    String words = bookIDText.getText().toString();
    if (words == "W")
        {
            robot.keyPress(KeyEvent.VK_H);
        }
    }
    catch (AWTException e) 
    { 
        e.printStackTrace(); 
    } 
}
public static void main(String[] args) 
{ 


        RobotTest frame = new RobotTest();
        frame.pack();
        frame.setVisible(true);
        frame.setResizable( false );
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

} 
}

【问题讨论】:

  • 您为什么希望它能够工作?您实际上从不等待按键被按下(或任何其他事件)。
  • 使用equals() 比较字符串,而不是==。

标签: java swing keypress jtextfield awtrobot


【解决方案1】:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class RobotTest extends JFrame
{
    JTextField bookIDText;

    public RobotTest() throws AWTException
    {
        final Robot robot = new Robot();
        bookIDText = new JTextField();
        this.add(bookIDText);
        bookIDText.addActionListener( new ActionListener(){
            public void actionPerformed(ActionEvent ae) {
                String words = bookIDText.getText().toString();
                System.out.println("Action on " + words);
                if (words.equals("W"))
                {
                    System.out.println("Pressing key");
                    robot.keyPress(KeyEvent.VK_H);
                }
            }
        } );
    }

    public static void main(String[] args) throws Exception
    {
        RobotTest frame = new RobotTest();
        frame.pack();
        frame.setVisible(true);
        frame.setResizable( false );
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

键入 Shift+w Enter 时的典型输出。

Action on W
Pressing key
Press any key to continue . . .

【讨论】:

    【解决方案2】:
    try
        {
        Robot robot = new Robot(); 
        bookIDText = new JTextField ();
        this.add(bookIDText);
        String words = bookIDText.getText().toString();
        if (words.equalsIgnoreCase("W"))
            {
                robot.keyPress(KeyEvent.VK_H);
            }
        }
        catch (AWTException e) 
        { 
            e.printStackTrace(); 
        } 
    

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      相关资源
      最近更新 更多