Can someone help me out pls? I need to be able to update my JTable based on the selected item in the combobox. Unfortunately, my JTable doesn't update when I choose another item in the combo box. What am I doing wrong?

my code:

my_constructor()
{
JComboBox cbdisease;
.
.
.


cbdisease = new JComboBox();
cbdisease.setEditable(false);
cbdisease.setBounds(30,20,270,25);
add(cbdisease);
cbdisease.addActionListener(this);
cbdisease.addItem("View All");

//aside from "View All" that was previously added to the combo box
//get the values from the database to fill the comboBox
showDiseases();

cbdisease.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent e)
{
System.out.println(cbdisease.getSelectedItem());
displayRules();

}
});
.
.
.
}// end constructor

/*************************
method: showDiseases

connect to DB and get D_Description (column in database)
display D_Description in combo box
*************************/

public void showDiseases()
{
Connection conn = null;
ResultSet rs = null;
Statement statement = null;

try {
// Connect to DB
Class.forName("com.mysql.jdbc.Driver").newInstance ();
conn = DriverManager.getConnection("jdbc:mysql:///dbused",
"root", "");

// create a statement, execute query
statement = conn.createStatement();
rs = statement.executeQuery("SELECT DISTINCT D_Description FROM disease");

//place D_Description in combo box
while(rs.next())
{
strDesc = rs.getString("D_Description");
cbdisease.addItem(strDesc);
}

conn.close();
statement.close();

} catch (SQLException sqle) {
sqle.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}//end catch

}//end showDiseases()


/*************************
method: displayRules

connect to DB and get the rules depending item selected in the combo box
display the rules in a table
**************************/

public void displayRules()
{

Connection conn = null;
ResultSet rs = null;
Statement statement = null;

try {
// Connect to DB
Class.forName("com.mysql.jdbc.Driver").newInstance ();
conn = DriverManager.getConnection("jdbc:mysql:///dbused",
"root", "");

// create a statement, execute query
statement = conn.createStatement();

if(cbdisease.getSelectedItem().equals("View All"))
{
rs = statement.executeQuery("SELECT D_DiseaseCode, D_Description, D_QuestionCode, D_Question, D_Action, D_NumArrow, D_Arrow FROM Disease ORDER BY D_DiseaseCode, D_QuestionCode");
}
else //query depends on the item selected in combo box other than "View All"
{
rs = statement.executeQuery("SELECT D_DiseaseCode, D_Description, D_QuestionCode, D_Question, D_Action, D_NumArrow, D_Arrow FROM Disease WHERE" + " D_Description = '" +cbdisease.getSelectedItem()+ "' ORDER BY D_DiseaseCode, D_QuestionCode");
}

// Convert the result set into an array of Objects
Object[][] rows = getObjects(rs);

// These are the column headings displayed in the JTable
String[] headings = { "Disease Code", "Description", "Question Code", "Question", "Action", "# of Arrows", "Arrow"};

// Initialize a JTable with the rows of objects and column headings
rulestable = new JTable(rows, headings);

// Add the table to a JScrollPane to make it display nicely
rulesScroll = new JScrollPane(rulestable);

// Add the scroll pane to the container
add(rulesScroll);
rulesScroll.setBounds(30,80,720,380);

conn.close();
statement.close();

} catch (SQLException sqle) {
//sqle.printStackTrace();
System.out.println(sqle.getSQLState());
} catch(Exception e) {
System.err.println("Exception: " + e.getMessage());
}

}//end displayRules()

/*************************
method: getObjects
**************************/

public Object[][] getObjects(ResultSet rs) throws SQLException
{
// Find out how many columns are in the result set
ResultSetMetaData metaData = rs.getMetaData();
final int colCount = metaData.getColumnCount();

ArrayList rows = new ArrayList();
Object[] row = null;


while (rs.next()) {
// for each row in the result set, put every column into a temporary Object array
row = new Object[colCount];
for (int a = 0; a < colCount; a++)
row[a] = rs.getObject(a+1);

// add the temporary Object array to the array list
rows.add(row);
}

// convert the array list to objects
return (Object[][])rows.toArray(new Object[0][0]);

}//end getObjects()