如何防止我的jComboBox重置?

时间:2014-06-06 13:07:13

标签: java swing jdbc jcombobox

我有ResultSet。这个ResultSet正在使用以下数据填充JComboBox

DatabaseHandler dh = new DatabaseHandler();

public ResultSet Klanten;

public BestellingenNieuwPanel() {
    initComponents();
    //Removes all items from KlantBox.
    KlantBox.removeAllItems();
    //Removes all from ProductBox.
    ProductBox.removeAllItems();
        try {
        Klanten = dh.getDataFromDB("select * from klanten");
        while (Klanten.next()) {
            String strKlanten = Klanten.getString("Achternaam");
            KlantBox.addItem(Klanten.getString(3));
        }

    } catch (Exception e) {
        System.out.println(e.getMessage());
    }

这很好用。但是,每当我试图像这样再次遍历ResultSet Klanten时:

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

    if(Klanten != null){
        String strSelected = KlantBox.getSelectedItem().toString();            
        try {
            while(Klanten.next()){
                String KlantVoornaam = Klanten.getString(1);
                String KlantAchternaam = Klanten.getString(2);
                String KlantWoonplaats = Klanten.getString(4);
                if(strSelected == KlantAchternaam){
                    txtKlantNaam.setText(KlantAchternaam);
                    txtKlantWoonplaats.setText(KlantWoonplaats);
                }
            }
        } catch (SQLException ex) {
        }

    }
}      

我的JComboBox Klanten只有它的最后一个值。 我已经摆弄了Klanten.next()函数,发现该函数是问题的根源。

还有其他方法可以循环ResultSet吗? 或者有没有办法循环ResultSet而不重置我的JComboBox

2 个答案:

答案 0 :(得分:1)

不要比较像if(strSelected == KlantAchternaam){这样的字符串使用equals()代替。

但实际上在刷新组合框后,只需致电setSelectedItem(strSelected )

答案 1 :(得分:0)

我认为错误在于使用==比较字符串而不是使用Klanteen.next()

尝试使用以下代码

if(strSelected.equals(KlantAchternaam)){
                txtKlantNaam.setText(KlantAchternaam);
                txtKlantWoonplaats.setText(KlantWoonplaats);
            }

或者这个,如果你想忽略大小写

if(strSelected.equalsIgnoreCase(KlantAchternaam)){
                txtKlantNaam.setText(KlantAchternaam);
                txtKlantWoonplaats.setText(KlantWoonplaats);
            }