2014-02-13 47 views
1

是否可以避免覆蓋按鈕文本。例如,在我的程序中,我有三個按鈕;如何避免在java中覆蓋按鈕文本?

JButton button1 = new JButton(); 
JButton button2 = new JButton(); 
JButton button3 = new JButton(); 

然後,我有一段代碼中隨機選取這些按鈕中的一個,並在其上寫入給定的文本/秒,現在我想是,一旦該代碼選擇了按鈕1,並寫入文字,我想它不在下一個隨機選擇中計算這個按鈕,或者檢查某個文本是否已經在按鈕上,然後選擇另一個按鈕來寫入文本。

String text = "text"; 
JButton[] arr = {button1, button2, button3}; 
Random r = new Random(); 
JButton b = arr[r.nextInt(arr.length)]; 
b.setText(text); 
b.setEnabled(false); 
+1

您可以使用數組列表而不是數組,並使用'arraylist.remove(b);'從列表中刪除已經選擇的按鈕。 –

+0

請給我一個例子,請。 – Seeker

回答

0

創建一個列表,你有剩餘的按鈕

List<JButton> remaining = new ArrayList(Arrays.asList(arr)); 

每次設置上的一個按鈕一個文本刪除按鈕從你列出

void removeButton(JButton b, String text) { 
    remaing.remove(b); 
    b.setText(text); 
    b.setEnabled(false); 
} 

然後調用實際的隨機時間大小

JButton b = remaining.get(r.nextInt(remaining.size())); 
+0

是否可以檢查按鈕是否爲兩個給定文本之一。例如檢查按鈕文本是否不是A或B,如果不是,則在隨機選擇中計算該按鈕,如果是,則不計算該按鈕。 – Seeker

+0

嗨,我收到關鍵字列表錯誤,列表 Seeker

+1

它不是一個關鍵字它是一個對象:你必須導入java.util.List和java.util.ArrayList 使用像eclipse這樣的編輯器:它會提出你哪些進口符合你的要求 –

2
  1. 創建一個包含按鈕的列表。
  2. 您可以使用Collections.shuffle()方法隨機化按鈕。
  3. 每次你需要一個隨機按鈕,你可以訪問按鈕(0),然後從列表中刪除按鈕。
+0

請給我看一個例子。 – Seeker

0

一條if語句應該在這裏工作:

String str = b.get Text(); 
if(str.size()==0){ 
    //Give text value 
} 
+0

是否可以檢查按鈕是否是給定的兩個文本之一。例如檢查按鈕文本是否不是A或B,如果不是,則在隨機選擇中計算該按鈕,如果是,則不計算該按鈕。 – Seeker

+0

我相信其他答案比我的實現要好得多! :) – Shrey

+0

好的,謝謝,我看看其他答案。 – Seeker