2016-08-22 4 views
2

Я написал программу для печати случайного слова и его определения в текстовое поле, когда кнопка нажата один раз. Я хочу, чтобы он печатал еще одно случайное слово и определение, когда кнопка нажимается несколько раз. Есть идеи? Я новичок в кодировании, поэтому, пожалуйста, учтите это.Как сделать мою кнопку выбрать случайное слово, а затем снова

Это то, что я до сих пор:

public class RandomWord extends JFrame{ 
private JTextField wordField; 
private JTextField defField; 
private JButton nextButton; 
private String words[] = {"Petrichor:",//0 
         "Iterate:",//1 
         "Absquatulate:",//2 
         "Anhuiliform:",//3 
         "Argle-bargle:","Argus-eyed:",//4 
         "Automy:",//5 
         "Benthos:",//6 
         "Bibliopole:",//7 
         "Bilboes:",//8 
         "Bruxism:",//9 
         "Borborygmus:",//10 
         "Calipygian:",//11 
         "Callithumpian:",//12 
         "Cereology:",//13 
         "Chad:",//14 
         "Chiliad:"};//15 

private String def[] = {"The smell of earth after rain.",//0 
         "To utter or perform repeatedly.",//1 
         "To leave somewhere abruptly.",//2 
         "Resembling an eel.",//3 
         "Copious but meaningless talk or writing.",//4 
         "Vigilant, refering to Argos a Greek mythological watchman with a hundred eyes.",//5 
         "The casting off of a limb or other part of the body by an animal under threat, such as a lizard.",//6 
         "The flora and faunda on the bottom of a sea or lake.",//7 
         "A person who buys and sells books, especially rare ones",//8 
         "An iron bar with sliding shackles, used to fasten prisoners' ankles.",//9 
         "Involantary and habitual grinding of the teeth.",//10 
         "A rumbling or gurgling noise in the intestines.",//11 
         "Having shapely buttocks.","Like a discordant band or a noisy parade.",//12 
         "The study or investigation of crop circles.",//13 
         "A piece of waste paper produced by punching a hole.",//14 
         "A thousand things or a thousand years."};//15 

public RandomWord(){ 
    super("Cool Words -1.5"); 
    setLayout(new FlowLayout()); 

    int idx = new Random().nextInt(words.length); 
    final String randomWord = words[idx]; 
    final String randomDef = def[idx]; 

    wordField = new JTextField("Petrichor",20); 
    add(wordField); 
    defField = new JTextField("The smell of earth after rain",20); 
    add(defField); 
    nextButton = new JButton("Next"); 
    add(nextButton); 

    nextButton.addActionListener(new ActionListener() { 

     public void actionPerformed(ActionEvent arg0) { 
      wordField.setText(randomWord); 
      defField.setText(randomDef); 

     } 
    }); 
} 

}

+0

не делают его окончательным, и когда они нажимают кнопку, которая должна быть, когда вы генерируете случайный индексный номер. –

+1

Ну, это было просто. ха-ха, я чувствую себя идиотом! Бесконечно благодарен! работает как шарм. – CapnCoin

ответ

0

Вы выбираете случайное слово и определение на конструктору называется. Вы должны изменить это, чтобы выбрать случайное слово и определение, когда вы нажимаете мышью (внутри метода actionPerformed).

Try с этим:

public RandomWord(){ 
    super("Cool Words -1.5"); 
    setLayout(new FlowLayout()); 

    wordField = new JTextField("Petrichor",20); 
    add(wordField); 
    defField = new JTextField("The smell of earth after rain",20); 
    add(defField); 
    nextButton = new JButton("Next"); 
    add(nextButton); 

    nextButton.addActionListener(new ActionListener() { 

     public void actionPerformed(ActionEvent arg0) { 

      // this method is executed when you clicked; 
      // The random word and definition must be choose at this moment. 
      int idx = new Random().nextInt(words.length); 
      wordField.setText(words[idx];); 
      defField.setText(def[idx]); 

     } 
    }); 
} 
+0

Вопросы с дампами кода не подходят - но также и ответы на дамп кода. Сайт и ОП выиграют гораздо больше от соответствующего объяснения, а не с дампа кода ложки. –

+0

Работает как шарм. Поскольку я просматривал код, чтобы попытаться выяснить, что происходит, я заметил, что прием случайного элемента массива в строку, а затем его включение в нем избыточно :) – CapnCoin

+0

@HovercraftFullOfEels Извините, вы правы. –

0

Попробуйте удалить окончательное ключевое слово в ваших строках. Финал означает, что значение строки не может быть изменено после его объявления:

String randomWord = words[idx]; 

    String randomDef = def[idx];