2014-10-14 3 views
0

Как я могу сделать это лучше?Управление динамической меткой Java

label1.setText("foo"); 
label2.setText("foo"); 
label3.setText("foo"); 
label4.setText("foo"); 

For example like(PSEUDOCODE): 
for(i=0; i<5; i++;){ 
label+i.setText("foo"); 
} 

Я должен изменить 135 этикеток так хотел несколько советов здесь .. Если вы знаете, как сделать функцию, как этот проще, .. jlabelnum может быть 1,2,3, .. 135 форекс. Этикетка (jlabelnum) -> Label1, Label2, ...

public void setLabelforView(int jlabelnum, String StringValue, Color color) { 
     Label. 

     switch(jlabelnum){ 

      case 1: 
       break; 
      case 1: 
       break; 
      case 2: 
       break; 

Большое спасибо!

+3

кажется, что вы должны использовать [массивы] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html). – Pshemo

+0

Да, поддерживайте метки в массиве или List для упрощения управления и обновления – MadProgrammer

ответ

0

Если вы хотите иметь дело с большим количеством ярлыков создать массив им нравится эта

public class Test{ 

//create the array 
JLabel[] labels = new JLabel[100]; 

public Test(){ 
    //loop through them and set their text value 
    for(int i = 0; i < labels.length; i++){ 
    labels[i] = new JLabel("foo"); 
    } 
} 

Тогда вот функция, которая будет изменить один из них текст (и цвет)

public void setLabelforView(int jlabelnum, String StringValue, Color color) { 
    labels[jlabelnum].setText(StringValue); 
    labels[jlabelnum].setForeground(color); 
} 

Эта функция изменит все из них

public void setAllLabelsForView(String string, Color color){ 
    for(int i = 0; i < labels.length; i++){ 
    labels[i].setText(string); 
    labels[i].setForeground(color); 
    } 
} 
+0

Thnx для ответа на мою проблему это решит. Thnx для кода, который вы написали. –

0

Вероятно, самый простой способ, с этой точки, чтобы использовать HashMap индексировать все компоненты в форме, по имени:

HashMap<String,Component> map = new HashMap<String,Component>(); 
Component[] comps = getComponentPane().getComponents(); 
for (int i=0; i < comps.length; i++) 
    map.put(comps[i].getName(), comps[i]); 

После этого, вы будете иметь возможность смотреть компоненты в ваш map, и сделайте то, что вы хотите с ними. Если вы знаете, что вам нужно будет только повесить метки, вы можете проверить, есть ли у каждого компонента instanceof JLabel, прежде чем принимать решение о его добавлении.

(Лучше было бы создать ярлыки программно, так и с правой текст в них, а затем добавить их программно в форму.)

Смежные вопросы