Question

Is there a workaround for casting a String[] to Object[]? I keep getting an error when using this. I am trying to insert into a jTable and it gives me error saying I am trying to convert type String to type Object...

Here I am getting dates and inserting it into object months.

    // Create calendar and format to first sunday of the year.
    Calendar c;
    Object[] months = new String[52];
    c = Calendar.getInstance();
    c.set(Calendar.MONTH,0);
    c.set(Calendar.DATE, 5);
    // Format Date and insert into months object array
    DateFormat df = new SimpleDateFormat("MM/dd/yyy");
    for (int i =0; i < 52; i++){
        months[i] = df.format(c.getTime());
        c.add(Calendar.DATE, 7);
    }

    //Insert Months array into jComboBox
    jComboBox1.setModel(new DefaultComboBoxModel(months));
    ...
    ...

    //Action performed retrieves selection from jComboBox and insert into table

    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           

        // object[] o gets selection from selectedItem()
        Object[] o = (Object[]) jComboBox1.getSelectedItem();

        //error checking to println
        System.out.println(jComboBox1.getSelectedItem() + "    ");

        // create DefaultTableModel and insert into row zero with the object selected
        DefaultTableModel model = (DefaultTableModel) weeklyCalendar.getModel();

        //insert into row, throws error
        model.insertRow(0, o);
    }

soo I guess I am getting a string from getSelectedItem() and trying to cast it to an Object[] with throws the error exception...what can I do to get around that?

Was it helpful?

Solution

Use jComboBox1.getSelectedObjects() instead if you want an array.

Though not necessary for String, you may want to call .toString() on the returned Object when this line executes, just in case you happen to be storing Objects that are not String.

//error checking to println
System.out.println(jComboBox1.getSelectedItem() + "    ");

Note that the .getSelectedObjects() method wouldn't be the preferred one to use, as it's still only returning a single element in an Object[] array. If you need an array, it would be easier just to use .getSelectedItem() and store the result in an array after the fact.

*Edited to reflect comment feedback.

OTHER TIPS

You can't cast the complete String array to Object Array. You will have to cast elements individually. Create a method to cast all elements of type String to Object.

The two important lines are here:

jComboBox1.setModel(new DefaultComboBoxModel(months));

Object[] o = (Object[]) jComboBox1.getSelectedItem();

You aren't trying to cast a String[] to an Object[] but rather a String to an Object[] since getSelectedItem returns a single item.

I believe what you are wanting is just this:

Object o = jComboBox1.getSelectedItem();

Or this which will be a valid cast:

String s = (String)jComboBox1.getSelectedItem();
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top