Java 如何将代码输出为击键?

Java 如何将代码输出为击键?,java,awtrobot,Java,Awtrobot,如何将代码输出为击键?我知道我必须使用Robot类,但是我如何才能使它为对象输出 import java.util.HashSet; import java.util.Set; import java.awt.Robot; import java.awt.event.KeyEvent; public class MainClass { public static Set<String> generatePowerSet(String inputString) { Set&

如何将代码输出为击键?我知道我必须使用Robot类,但是我如何才能使它为对象输出

import java.util.HashSet;
import java.util.Set;
import java.awt.Robot;
import java.awt.event.KeyEvent;

public class MainClass {

public static Set<String> generatePowerSet(String inputString)
{
    Set<String> result = new HashSet<String>();
    result.add(""); // empty string is an element of the power set

    if (inputString != null && !inputString.isEmpty())
    {
        int n = 1 << inputString.length(); //2^n - the number of elements in the power set 
        StringBuilder sb = new StringBuilder();

        for (int i = 1; i < n; i++) // skip empty set, i = 0
        {
            int k = i; // current number to manipulate
            sb.delete(0, sb.length()); // clear the StringBuilder
            for (int index = 0; index < inputString.length() && k > 0; index++) // break early when k == 0
            {
                if ((k & 1) == 1) // include char at index if bit at that index is 1
                {
                    sb.append(inputString.charAt(index));
                }
                k >>= 1;
            }
            result.add(sb.toString());
        }
    }
    return result;
}

public static void permuteString(String bs, String end) {
    if (end.length() <= 1)
        System.out.println(bs + end);//I THINK I HAVE TO CHANGE SOMETHING OVER HERE
    else
        for (int i = 0; i < end.length(); i++) {
            try {
                String newString = end.substring(0, i) + end.substring(i + 1);

                permuteString(bs + end.charAt(i), newString);
            } catch (StringIndexOutOfBoundsException exception) {
                exception.printStackTrace();
            }
        }
}

public static void main(String args[])  {

    Set<String> powerSet = generatePowerSet("String");

    Set<String> allPossibilities = new HashSet<String>();

    for(String s : powerSet)
    {
        permuteString(" ", s );
    }
}
}
import java.util.HashSet;
导入java.util.Set;
导入java.awt.Robot;
导入java.awt.event.KeyEvent;
公共类主类{
公共静态集generatePowerSet(字符串输入字符串)
{
Set result=new HashSet();
result.add(“”;//空字符串是幂集的一个元素
if(inputString!=null&&!inputString.isEmpty())
{
int n=1 0;index++)//当k=0时提前中断
{
if((k&1)==1)//如果索引处的位为1,则在该索引处包括char
{
sb.append(inputString.charAt(index));
}
k>>=1;
}
添加(sb.toString());
}
}
返回结果;
}
公共静态void permuteString(字符串bs,字符串结束){
如果(end.length()这是一个正在使用的
机器人

增编:


我知道如何一次发送一个字符,但不能发送字符串


Robot
使用
KeyEvent
,没有简单的反向映射。取而代之的是,有一百万种方法可以为大赢家制作动画;以下是一些示例:

  • 使用
    javax.swing.Timer
    一次滚动文本一个字符,如图所示

  • 如图所示,将“赢”图像置乱

  • 如图所示,淡入“Win!”

  • 增编:


    有没有办法将我输出到控制台窗口中的所有内容都放在一个文件中


    “对象的输出”是什么意思?当我试图用机器人输出它时,它说它需要一个字符串而不是一个对象。@TheWaller:这并不能回答我的问题,而且你仍然没有告诉我们你最终要实现什么。你能为你的问题提供更多的细节吗?假设我们不能读懂你的心思。对不起,我正在制作一个程序,可以输出你的想法ut字符串的所有可能组合。我知道了。现在我必须让Robot类将它们作为击键输出。我该怎么做?@TheWaller:对不起,也许是我,但我仍然不知道你所说的“将它们作为击键输出”是什么意思?作为什么的击键?作为ArrayList?如果你不能很快得到答案,请澄清。我知道如何一次发送一个字符而不是字符串。
    Robot
    使用
    KeyEvent
    。相反,使用
    javax.swing.Timer
    将文本添加到标签中,一次一个字符。有没有办法将我输出的所有内容放入控制台窗口转换成一个文件?我的意思是在源代码中。然后我想制作另一个程序,只需读取其中的字母并将它们全部击出。转换成一个文件?试试。
    java -cp build/classes MainClass > somefile.txt