有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java获取重复操作的按钮

我正在为我的第一个java项目制作一个简单的应用程序。 它组合各种字符串以产生输出。例如:名字

然而,我遇到了一个障碍,我把我的GUI都布置好了,所有的字符串都编好了,它们都会生成一个随机结果,并在被告知时将其写入文本标签,但是如果我再次单击按钮-nada。没什么

我的问题是-我如何让一个按钮重复我让它做的过程?没有人能向我解释这一点。我不是在寻找一个快速解决办法,而是一个“如何做”,因为我希望学习。:)

以下是我的代码的简化版本:

public static  String[] name1 = {
    "a", "b", "c", "d", "e", "f", "g", "h", "i", 
    "j", "k", "l", "n", "o", "p", "q", "r", "s",
    "t", "u", "v", "w", "x", "y", "z"
};

public static  String[] name2 = {
    "oh noes", "its not working","sad face"
};  

public static int name1length = name1.length;

public static int name2length = name2.length;

public static int rand1 = (int) (Math.random() * name1length);

public static int rand2 = (int) (Math.random() * name2length);

public static String phrase = name1[rand1] + " " + name2[rand2];

共 (2) 个答案

  1. # 1 楼答案

    问题是,变量是静态的,它们只初始化一次,这意味着短语只计算一次

    假设每次都需要不同的phrase,然后每次单击按钮时重新初始化它们。从rand1rand2phrase中删除单词static并重新编译应该会为您指明正确的方向

    也许像

    class RandomLabeller {
        private static  String[] name1 = "abcdefghijklmnopqrstuvwxyz".toCharArray();
        private static  String[] name2 = {"oh noes","its not working","sad face"};  
        private static  int name1length = name1.length;
        private static  int name2length = name2.length;
        private int rand1 = (int)(Math.random()*name1length);
        private int rand2 = (int)(Math.random()*name2length);
        public final String phrase = name1[rand1] + " " + name2[rand2];
    }
    

    然后使用新的RandomLabeller()。用短语代替任何类别。短语更好的是,用一些方法,比如getPhrase()来隔离这些

  2. # 2 楼答案

    考虑两件事:

    1. 为您的目的创建对象,不要使用这么多静态字段-这是邪恶的,以后会给您带来很多麻烦
    2. Write方法reset()将字段设置为默认值,start()开始“进程”并包含reset(),如果要重复“进程”,只需调用start()