Переменное содержимое (String) для доступа к методам JCheckBox - PullRequest
0 голосов
/ 01 октября 2018

У меня есть этот массив:

String extras[] = new String[6];

extras[0] = "bacon";
extras[1] = "potato";
extras[2] = "chicken";
extras[3] = "cheese";
extras[4] = "olive";
extras[5] = "tomato";

и этот arrayList:

ArrayList selectedExtra = new ArrayList();

Я пытаюсь получить только выбранные itens, поэтому у меня есть это для цикла:

for (int i=0; i<extras.length ; i++){

       String aditional = extras[i]; //get each extra name

       if(aditional.isSelected()){  // thats my problem
       selectedExtra.add(adicional); // add the selected extras 

        }
     }

Я пытаюсь приписать каждую строку, скажем, «Бекон», и использую ее, чтобы проверить, выбран ли JCheckBox с таким именем, и, если это так, приписать это моему массиву.

Да, имена элементов массива точно совпадают с именами JCheckBox.

Как я могу это сделать ??Спасибо!

Ответы [ 3 ]

0 голосов
/ 01 октября 2018

Кажется слишком сложным поместить представление String в Array, а затем попытаться получить Object.Почему бы просто не сохранить фактические значения JCheckBox в массиве:

JCheckBox[] extras = new JCheckBox[6];
//add items

//Don't use raw types! 
ArrayList<JCheckBox> selectedExtra = new ArrayList<>();

for (int i=0; i<extras.length ; i++){
    if(extras[i].isSelected()){  
       selectedExtra.add(extras[i]); // add the selected extras 
    }
 }
0 голосов
/ 01 октября 2018

Я справился с этим гораздо более грязным решением.Я проверяю, выбран ли каждый selectedExtra, и если да, я проверяю, содержит ли массив уже слово, которое я ищу;если нет, я добавляю к нему слово.

 if (!selectedExtra.contains("Bacon") && bacon.isSelected()) {
            selectedExtra.add("Bacon");
    }   

Делайте это с каждым элементом.

ps: оставлю его открытым дольше, если кто-нибудь придет к лучшему решению, возможно,помочь другим!

0 голосов
/ 01 октября 2018

У вас может быть HashMap, который отображает строки (имена ваших дополнений) в экземпляры JCheckBox.Затем вы можете выполнить поиск в этой хэш-карте со строкой, чтобы получить соответствующий флажок, чтобы проверить, выбран ли он.

Примерно так: (конечно, это сильно упрощено)

private final Map<String, JCheckBox> boxes = new HashMap<>();

{
    String[] extras = {"Bacon"};

    boxes.put("bacon", new JCheckBox("Bacon"));

    for (String extra : extras) {
        if (boxes.get(extra).isSelected()) {
            // do stuff
        }
    }
}

Конечно, гораздо более чистым вариантом будет использование Enum для дополнений.Тогда вы можете использовать EnumMap для экземпляров JCheckBox.

...