变量内容(String)访问JCheckBox的方法
Variable content (String) to access JCheckBox's methods
我有这个数组:
String extras[] = new String[6];
extras[0] = "bacon";
extras[1] = "potato";
extras[2] = "chicken";
extras[3] = "cheese";
extras[4] = "olive";
extras[5] = "tomato";
和这个数组列表:
ArrayList selectedExtra = new ArrayList();
我试图只获取选定的项目,所以我有这个 for 循环:
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
}
}
我正在尝试为每个字符串添加属性,比方说 "Bacon",并使用它来检查是否选择了具有该名称的 JCheckBox,如果是,则将其添加到我的 arrayList。
是的,数组项的名称与 JCheckBox 的名称完全相同。
我怎样才能完成??谢谢!
您可以有一个 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 作为附加功能。然后您可以为 JCheckBox 实例使用 EnumMap。
将 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
}
}
我用更脏的解决方案解决了这个问题。我测试是否每个 selectedExtra 都被选中,如果是,我检查数组是否已经包含我在其中查找的单词;如果没有,我给它加上这个词。
if (!selectedExtra.contains("Bacon") && bacon.isSelected()) {
selectedExtra.add("Bacon");
}
对每个项目都这样做。
ps:将它打开的时间更长一些,以防有人提出更好的解决方案来帮助他人!
我有这个数组:
String extras[] = new String[6];
extras[0] = "bacon";
extras[1] = "potato";
extras[2] = "chicken";
extras[3] = "cheese";
extras[4] = "olive";
extras[5] = "tomato";
和这个数组列表:
ArrayList selectedExtra = new ArrayList();
我试图只获取选定的项目,所以我有这个 for 循环:
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
}
}
我正在尝试为每个字符串添加属性,比方说 "Bacon",并使用它来检查是否选择了具有该名称的 JCheckBox,如果是,则将其添加到我的 arrayList。
是的,数组项的名称与 JCheckBox 的名称完全相同。
我怎样才能完成??谢谢!
您可以有一个 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 作为附加功能。然后您可以为 JCheckBox 实例使用 EnumMap。
将 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
}
}
我用更脏的解决方案解决了这个问题。我测试是否每个 selectedExtra 都被选中,如果是,我检查数组是否已经包含我在其中查找的单词;如果没有,我给它加上这个词。
if (!selectedExtra.contains("Bacon") && bacon.isSelected()) {
selectedExtra.add("Bacon");
}
对每个项目都这样做。
ps:将它打开的时间更长一些,以防有人提出更好的解决方案来帮助他人!