【问题标题】:How can I prevent my jComboBox from resetting?如何防止我的 jComboBox 重置?
【发布时间】:2014-06-06 13:07:13
【问题描述】:

我有一个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吗? 或者有没有办法在不重置我的JComboBox 的情况下循环ResultSet

【问题讨论】:

    标签: java swing jdbc jcombobox


    【解决方案1】:

    不要比较像 if(strSelected == KlantAchternaam){ 这样的字符串,请改用 equals()。

    但实际上刷新组合框后只需调用setSelectedItem(strSelected )

    【讨论】:

    • 可能在 MutableComboBoxModel 中
    【解决方案2】:

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

    试试下面的代码

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      相关资源
      最近更新 更多