2014-03-29 21 views
0

我在java中不是那麼好..我在一個項目中工作,在我的項目中程序應該繪製k-map,我用標籤繪製它,它的作品很好..我只想知道是否有任何通過更改標籤的背景顏色來簡單地進行分組。問題是我沒有任何有效的方法..唯一的辦法是使用可能發生的所有概率將它們分組,並將它放在if語句中(我知道它會成爲概率尤其是當變量的數目爲四):(如何在java中的k-map中進行分組?

這樣的(我不會發布這一切)。

if(lbl1.getText().equals("1")&& lbl2.getText().equals("")&&lbl3.getText().equals("")&& lbl4.getText().equals("")&&lbl5.getText().equals("")&& lbl6.getText().equals("") 
      &&lbl7.getText().equals("")&& lbl8.getText().equals("")&&lbl9.getText().equals("")&& lbl10.getText().equals("")&&lbl11.getText().equals("")&& lbl12.getText().equals("") 
      &&lbl13.getText().equals("")&& lbl14.getText().equals("")&&lbl15.getText().equals("")&&lbl16.getText().equals("")){ 
     lbl1.setOpaque(true); 
     lbl1.setBackground(Color.blue); 
    } 
else if(lbl1.getText().equals("")&& lbl2.getText().equals("1")&&lbl3.getText().equals("")&& lbl4.getText().equals("")&&lbl5.getText().equals("")&& lbl6.getText().equals("") 
      &&lbl7.getText().equals("")&& lbl8.getText().equals("")&&lbl9.getText().equals("")&& lbl10.getText().equals("")&&lbl11.getText().equals("")&& lbl12.getText().equals("") 
      &&lbl13.getText().equals("")&& lbl14.getText().equals("")&&lbl15.getText().equals("")&&lbl16.getText().equals("")){ 
     lbl2.setOpaque(true); 
     lbl2.setBackground(Color.blue); 
    } 
else if(lbl1.getText().equals("")&& lbl2.getText().equals("")&&lbl3.getText().equals("")&& lbl4.getText().equals("")&&lbl5.getText().equals("1")&& lbl6.getText().equals("") 
      &&lbl7.getText().equals("")&& lbl8.getText().equals("")&&lbl9.getText().equals("")&& lbl10.getText().equals("")&&lbl11.getText().equals("")&& lbl12.getText().equals("") 
      &&lbl13.getText().equals("")&& lbl14.getText().equals("")&&lbl15.getText().equals("")&&lbl16.getText().equals("")){ 
     lbl5.setOpaque(true); 
     lbl5.setBackground(Color.blue); 
    } 
    else if(lbl1.getText().equals("")&& lbl2.getText().equals("")&&lbl3.getText().equals("")&& lbl4.getText().equals("")&&lbl5.getText().equals("")&& lbl6.getText().equals("1") 
      &&lbl7.getText().equals("")&& lbl8.getText().equals("")&&lbl9.getText().equals("")&& lbl10.getText().equals("")&&lbl11.getText().equals("")&& lbl12.getText().equals("") 
      &&lbl13.getText().equals("")&& lbl14.getText().equals("")&&lbl15.getText().equals("")&&lbl16.getText().equals("")){ 
     lbl6.setOpaque(true); 
     lbl6.setBackground(Color.blue); 
    } 
    else if(lbl1.getText().equals("1")&& lbl2.getText().equals("1")&&lbl3.getText().equals("")&& lbl4.getText().equals("")&&lbl5.getText().equals("")&& lbl6.getText().equals("") 
      &&lbl7.getText().equals("")&& lbl8.getText().equals("")&&lbl9.getText().equals("")&& lbl10.getText().equals("")&&lbl11.getText().equals("")&& lbl12.getText().equals("") 
      &&lbl13.getText().equals("")&& lbl14.getText().equals("")&&lbl15.getText().equals("")&&lbl16.getText().equals("")){ 
     lbl1.setOpaque(true); 
     lbl1.setBackground(Color.blue); 
     lbl2.setOpaque(true); 
     lbl2.setBackground(Color.blue); 
    } 
+0

這實在太差了。例如,您應該將每個JLabel分組在一個列表中,並遍歷此列表 – cheseaux

+1

噢,我的數組可能會在這裏幫助 – 2014-03-29 09:57:01

+0

分組是指標識一個鍵並使用該鍵映射與其關聯的集合。 –

回答

2

隨着所有16個標籤名爲的數組(或列表) 0,類似於:

for (final JLabel label : labels) { 
    // reset others? 
    if ("1".equals(label.getText()) { 
     label.setOpaque(true); 
     label.setBackground(Color.blue); 
    } 
} 
+0

非常感謝你的工作...... –

+0

我喜歡它^^ .. –

+0

我想問..如果我想添加一些條件..我該怎麼做?比如我想寫兩個標籤,如果兩個標籤彼此靠近,它會用特定的顏色和其他標籤相互靠近並用另一種顏色進行着色?如果三個標籤連續不具有相同的顏色! –

-1
+0

我想在jframe或jpanel中繪製它 –

+0

感謝您的幫助.. –

+0

網址應該包含在答案中[僅供進一步閱讀](http://meta.stackexchange.com/q/8259)。這個答案似乎嚴重依賴於URL的內容,並且可以從答案中包含的網址摘要中受益。 –