Piszę prostą apkę "kalkulator kalorii" w oparciu o JavaFX i SQLite.
Mam bazę danych z taką tabelą prduktów:

id (int)
name (TEXT)
kcal, protein, carb, fat (float)
type (TEXT)

W apce mam klasę która pobiera parametr String type i na jego podstawie wyświetla w TableView produkty tego typu

 
public void loadTypeDataFromDB(String type){
        products = FXCollections.observableArrayList();
              try {
            PreparedStatement pst =  conn.prepareStatement("SELECT name, kcal, protein, carb, fat FROM Products WHERE type=?");
            pst.setString(1, type);
            ResultSet rs = pst.executeQuery();
                  while(rs.next()){
                products.add(new productData(rs.getString("name"), rs.getString("kcal"), rs.getString("protein"), rs.getString("carb"), rs.getString("fat")));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        colProduct.setCellValueFactory(new PropertyValueFactory<productData, String>("name"));
        colKcal.setCellValueFactory(new PropertyValueFactory<productData, String>("kcal"));
        colProtein.setCellValueFactory(new PropertyValueFactory<productData, String>("protein"));
        colCarbs.setCellValueFactory(new PropertyValueFactory<productData, String>("carb"));
        colFat.setCellValueFactory(new PropertyValueFactory<productData, String>("fat"));

        tableProduct.setItems(null);
        tableProduct.setItems(products);
    }

Dodałem do apki ComboBox, który zawiera wszytkie typy produktów z bazy

    public void loadTypefromDB()
    {
        types = FXCollections.observableArrayList();
        try{
            ResultSet rs = conn.createStatement().executeQuery("SELECT type FROM Products");
            while(rs.next()){
                String product = rs.getString("type");
                types.add(product);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        choiceBox.setItems(types);
    }

oraz metode choiceType która na podstawie wyboru w comboBoxie wywołuje metodę loadTypeDatafromDB

  public void choiceType(ActionEvent event)
    {
        choiceBox.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() {
            @Override
            public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
                loadTypeDataFromDB(newValue.toString());
            }
        });
    }

No i prawie mi się to udało, otóż nie działa to do końca jak powinno, mianowicie:
Po starcie aplikacji mamy comboBox
[Kategorie produktów]
(nabiał)
(ryby)
(pieczywo)
itd

Jednak po kliknięciu przykładowo pozycji nabiał nie dzieje się nic. Muszę drugi raz otworzyć comboBox i wybrać pozycję inną niż nabiał, przykładowo pieczywo i dopiero wtedy program wyświetla w tableView wszystkie produkty o typie pieczywo. Od tego momentu też mogę normalnie wyświetlać wszystkie inne typy. O co chodzi? Jak to ominąć, by już przy pierwszym wyborze wyświetlało to co powinno?