I want to to do the following but can't figure out how to do it in Java.

I retrieve information, including the primary key, from a database. Using this information, I load a comboBox. The user selects an item from the comboBox. Using that selection, I build an SQL join to retrieve additional information.

My Problem: I can't figure out how to keep track of the relationship between the items in the comboBox and the primary key.

Appreciate some help..

Thanks..

Recommended Answers

All 5 Replies

javax.swing.JComboBox

When you add an Object to the Combo Box, the toString() method is called and it displays that at the GUI: void addItem(Object anObject) The method Object getSelectedItem() gets you the item you have selected.

So create an object with all the info from the DB including the primary key:

class Data {
  private long id = 0L; // assuming this is the PK
  private Sting name = null;
  private int age = 0;
  .....

  public String toString() {
      return name;
  }
}

Get the data from the DB, put each row in a Data object and put that object into a List (java.util.Vector).

Then add each of the objects from the List to Combo Box

Thank you very much for the response. Hopefully, I'll get a chance to try it today. I'll get back when I do. Thanks again.

I'm sorry. I guess I didn't completely understand what you told me. I use the excuse that I'm a newbie!! Nothing is displayed in the comboBox. It appears it has the correct number of items but the dropdown box is empty. Here's my code. Appreciate your comments.

/* This class holds the contents of the database ResultSet */
public class Data {

    private String author = null;     //  Author's name
    private long primaryKey = 0L;   // Primary Key

    public void setName(String n){
        author = n;
    }

    public void setID(long id) {
        primaryKey = id;
    }
    // When you add an Object to the Combo Box,
    // the toString() method is called and it displays that at the GUI:

    @Override
    public String toString() {
        return author;
    }
}

Data data = null;   // Create an object to hold the database information
        Vector dataList = new Vector();

        // Retrive a complete list of authors from the database
        // formatted last, first.

        resultSet = dbManage.Query(SELECT);       // Get the data from the database

        try {
            while (resultSet.next()) {
                data = new Data();          // Create a Data object

                data.setName(resultSet.getString("Name"));  // Save the author's name
                data.setID(resultSet.getLong("authorID"));  // Save the author ID

                dataList.add(data);     // add the data row to the list
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        for (int i = 0; i < dataList.size(); i++) {

            cboAuthors.addItem(dataList.get(i));    // add the list to the comboBox
        }

The code in the previous post is okay. It was a user error on my part and I didn't catch it until my "edit post" time had expired. Sorry...

I still haven't tested retrieving the selected item. I'll get back when I have done that. Sorry for the bad post. And sorry I didn't catch until after the 30 minute edit time limit.

I retrieved the selected item into a "Data" object, which is the class I created to addItem the data. And there the row data was. Thank you.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.