2016-02-19 29 views
1

我有一個叫在線留言板類,還有它有這個陣列和這種方法:怎樣的setText JTextField的一種方法,利用陣列

String messages[] = new String[10]; 
    //declare 10 arrays 
    messages[0] = "Miley"; 
    messages[1] = "Katy"; 
    messages[2] = "Gaga"; 
    messages[3] = "Beyonce"; 
    messages[4] = "Taylor"; 
    messages[5] = "Missy"; 
    messages[6] = "Nicki"; 
    messages[7] = "Adele"; 
    messages[8] = "Rihanna"; 
    messages[9] = "Selena"; 

    String x = new ShoutBox().shoutOutCannedMessage(messages); 
    System.out.println(x); 

    public String shoutOutCannedMessage(String[] messages) { 
    for (int i = 0; i < messages.length; i++) { 
     System.out.println(i+". "+messages[i]); 
    } 

    System.out.print("Select a message: "); 
    int n = scan.nextInt(); 
    String message = messages[n]; 
    return message; 
    } 

然後我有一個另一個類的GUI,如何當執行操作時,我會將結果顯示在JTextField中?

private void shoutOutMessageActionPerformed(java.awt.event.ActionEvent  evt) {             
    JTextArea.setText(????); 
} 

謝謝!

回答

3

假設你想顯示在陣列中的下一個短語響應事件,並沒有顯示所有的短語一次全部:

  • 給你的類一個int指數計數器字段,如private int shoutIndex和初始化它爲0。
  • 在任何相關事件(例如在一個ActionListener),遞增該索引,例如,shoutIndex++
  • 然後確保索引不小於使用餘運算符陣列的長度長:shoutIndex %= messages.length
  • 然後使用索引messages[shoutIndex]從數組中獲取相應的項目,然後使用它設置JTextField的文本。
+0

感謝您的輸入。我剛開始學習Java,所以我沒有完全明白你的意思:(....所以我在哪裏聲明'private int shoutIndex'變量?是不是和'我'在'shoutOutCannedMessage '以上? –

+0

@VincentNg:你將它聲明爲你的GUI的一個字段,它是JTextField的類,並且不會和'i'不一樣,因爲for循環在這種情況下不起作用,我認爲你是考慮仍然使用for循環,如果是這樣,你會想要了解更多關於事件驅動的編程,看看爲什麼它不合適。 –

+0

現在我像失去了:DI可以聲明索引和增量,但是當我做這個'shoutIndex%= messages.length''messages'找不到... –