获取重复操作的按钮

时间:2011-03-29 10:49:38

标签: java string button random methods

我正在为我的第一个java项目创建一个简单的应用程序。 它结合了各种字符串来产生输出。例如 - 姓名。

然而,我遇到了困难,我的GUI全部布局,我的所有字符串都组成了,并且它们都会随机生成结果并在被告知时将其写入文本标签,但如果我再次单击该按钮 - 纳达什么都没有。

我的问题是这样的 - 如何制作按钮重复我正在制作的过程?没有人能够向我解释这一点。我不是在寻找快速修复,而是在寻找“如何”,因为我希望学习。 :)

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

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 个答案:

答案 0 :(得分:1)

考虑两件事:

  1. 为你的目的创建对象,不要使用这么多静态字段 - 它是邪恶的,可以让你以后遇到很多麻烦
  2. 写入方法reset(),它将你的字段设置为默认值,start()开始你的“进程”并包括reset()然后如果你想重复“process”只需调用start()

答案 1 :(得分:0)

问题是你的变量是静态的,它们只被初始化一次,这意味着你的短语只被评估一次。

假设您每次都想要不同的phrase,那么每次单击按钮时都会重新初始化它们。从staticrand1rand2删除单词phrase并重新编译应该指向正确的方向。

也许像

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()。短语而不是任何类.phrase。更好的是,使用getPhrase()等几种方法对这些进行隔离。