Arnoud
Arnoud

Reputation: 79

ComboBox adds all the values together as one value

I'm making an application at the moment and now I need to fill a comboBox with all the values that I get from another class in an arrayList type.

This is the code that I use to fill my combobox:

public void setComboBox(){
    MessageConsole mc = new MessageConsole(textArea);
    //The redirectOut will redirect the text from the System.out.prtnln to the text area.
    mc.redirectOut();
    List<String> arrayList = new ArrayList<String>();
    if(gf.loadCombo("config") != null){
    arrayList.addAll(gf.loadCombo("config"));
        for (int i = 0; i < arrayList.size(); i++) {
            String s = arrayList.get(i);
            configName.removeItem(s);
            configName.addItem(s);
        }
    }
}

This is the code from the other class:

public Collection<String> loadCombo(String property) {
    //Check if the property file is present in the given directory.
    if(cf.checkProperty()==true){
        //Check is there are any properties saved in the property file.
        if(cf.getProperty() != null){
            Properties prop = new Properties();
            FileInputStream fis;
            try {
                fis = new FileInputStream("config.properties");
                prop.load(fis);

            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            //Check if the properties match with the entered configuration.
            List<String> arrayList = new ArrayList<String>();
            arrayList.addAll(cf.getProperty());
            Collection<String> propertyList = new ArrayList<String>();
            for (int i = 0; i < arrayList.size(); i++) {
                String s = arrayList.get(i);
                if(s.startsWith(property)){
                    System.out.println("This value has been added to the arrayList from the other class: "+s);
                    propertyList.add(cf.getPropertyValue(s));
                }
            }
            return propertyList;
        }

        //The system prints a message of the missing properties.
        else{
            System.out.println("You need to save a configuration first.");
        }
    }

    //The system prints a message of the missing property file.
    else{
        System.out.println("The property file is either missing or could not be found. in de Load class");
    }
    return null;
}

Following is a screenshot of the result:

enter image description here

As you can see all the values are added as 1 long String"[3, 2, 1]" in the comboBox. Could anyone tell me why this happens?

Thanks in advance,

Lordarnoud

P.S. I hope this is the correct way to ask my question and I hope my question is clear enough for everyone to understand.

Upvotes: 1

Views: 275

Answers (1)

Jonathan Dixon
Jonathan Dixon

Reputation: 2336

At a first look it appears the problem could be one of two things:

  1. The value "[3 2 1]" is returned from the loadCombo method. More specifically from the cf.getProperty(). It is not clear from the context provided what cf is.
  2. The value "[3 2 1]" was added to your combobox at some other point in you code. If this might be case, try using configName.removeAllItems() instead of removing then adding each item in your collection.

Additionally in your loadCombo method you load the config.properties file into a Properties object and then do nothing with it. It seems your intentions were to load the config properties from that file instead of the cf object.

Upvotes: 2

Related Questions