Получить кнопку, чтобы повторить действие - PullRequest
0 голосов
/ 29 марта 2011

Я делаю простое приложение для моего первого проекта 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 ]

1 голос
/ 29 марта 2011

Подумайте о двух вещах:

  1. Создайте объект для своих целей, не используйте столько статических полей - это зло и может вызвать много неприятностей позже
  2. Напишите метод reset (), который устанавливает ваши поля в значения по умолчанию, и start (), которые начинают ваш «процесс» и включают в себя reset (), а затем, если вы захотите повторить «process», просто вызовите start ()
0 голосов
/ 29 марта 2011

Проблема в том, что ваши переменные являются статическими, они инициализируются только один раз, что означает, что ваша фраза оценивается только один раз.

Предполагая, что вы хотите каждый раз разные значения phrase, затем повторно инициализируйте ихкаждый раз, когда вы нажимаете кнопку.Удаление слова static из rand1, rand2 и 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().

...