1

I have created a JComboBox and populated its content from database using DefaultComboBoxModel.

Here is the code:

DefaultComboBoxModel model = new DefaultComboBoxModel();
PreparedStatement statement = con.prepareStatement("SELECT _fid, fruit_name FROM fruits;");

ResultSet result = statement.executeQuery();
while (result.next()) {
    model.addElement(result.getString(2));
}
comboBox = new JComboBox(model);

How can I also set the index of the JComboBox with the value of _fid?

I'm fairly new to Java & MySQL and right now I don't have a working idea.

Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433
alisongaleon
  • 153
  • 2
  • 4
  • 13

3 Answers3

2

it's still the same and on the class Fruit it says the id is unused.

not true, my class Item works as I expected, in your case required for better help sooner post an SSCCE, otherwise everything here are shots to the dark, for example, you can to modify and apply ItemRenderer too,

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.SwingUtilities;
import javax.swing.plaf.basic.BasicComboBoxRenderer;

public class SelectedComboBoxID {

    public SelectedComboBoxID() {
        JComboBox comboBox = new JComboBox();
        comboBox.addItem(new Item(1, "-"));
        comboBox.addItem(new Item(2, "Snowboarding"));
        comboBox.addItem(new Item(3, "Rowing"));
        comboBox.addItem(new Item(4, "Knitting"));
        comboBox.addItem(new Item(5, "Speed reading"));
        comboBox.addItem(new Item(6, "Pool"));
        comboBox.addItem(new Item(7, "None of the above"));
        comboBox.setMaximumRowCount(3);
        comboBox.setPrototypeDisplayValue(" None of the above ");
        comboBox.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                JComboBox comboBox = (JComboBox) e.getSource();
                Item item = (Item) comboBox.getSelectedItem();
                System.out.println(item.getId() + " : " + item.getDescription());
            }
        });
        //comboBox.setRenderer(new ItemRenderer());
        JFrame frame = new JFrame("MyComboEg");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(comboBox);
        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setVisible(true);
    }

   private class ItemRenderer extends BasicComboBoxRenderer {
        private static final long serialVersionUID = 1L;

        @Override
        public Component getListCellRendererComponent(JList list, Object value,
                int index, boolean isSelected, boolean cellHasFocus) {
            super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
            if (value != null) {
                Item item = (Item) value;
                setText(item.getDescription().toUpperCase());
            }
            if (index == -1) {
                Item item = (Item) value;
                setText("" + item.getId());
            }
            return this;
        }
    }

   private class Item {

        private int id;
        private String description;

        public Item(int id, String description) {
            this.id = id;
            this.description = description;
        }

        public int getId() {
            return id;
        }

        public String getDescription() {
            return description;
        }

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

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                SelectedComboBoxID selectedComboBoxID = new SelectedComboBoxID();
            }
        });
    }
}
mKorbel
  • 109,525
  • 20
  • 134
  • 319
0

Use a object to connect with your database record.

class Fruit{
    private String id;
    private String name;
    public Fruit(String id,String name){
        this.id=id;
        this.name=name;
    }

    public String toString(){
        return this.name;
    }
}

DefaultComboBoxModel model = new DefaultComboBoxModel();
comboBox = new JComboBox(model);
//
PreparedStatement statement = con.prepareStatement("SELECT _fid, fruit_name FROM fruits;");
ResultSet result = statement.executeQuery();
while (result.next()) {
    model.addElement(new Fruit(result.getString(1),result.getString(2)));
}
close(resultset,statement,con)
imxylz
  • 7,847
  • 4
  • 28
  • 25
0

Once you have created the Item Class, you will know how to call the id associated to the item class in the combo box:

//************************
System.out.print("The ID Associated is :"+((Item)jcbqtype.getSelectedItem()).getId());
//************************
Nathaniel Ford
  • 20,545
  • 20
  • 91
  • 102