有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

sqlite如何在Java中向ComboBox添加多个元素

我有一个名为“kierowca”的表,其中有一列名为“imie”和“nazwisko”。在我的应用程序中,我想在comboBox中添加一些项目,如“imie nazwisko”。这就是我的组合框的定义:

public DefaultComboBoxModel kierowcaCbModel = new DefaultComboBoxModel();
JComboBox kierowcaCb = new JComboBox(kierowcaCbModel);

以下是我从数据库中获取“imie”和“nazwisko”的方法:

public static String getKierowcaImieNazwisko(int id) {
    String imieNazwisko = "";
    try {
        ResultSet result = stmt.executeQuery("SELECT imie, nazwisko FROM kierowca WHERE id_kierowca="+id+";");
        while(result.next()) {
            imieNazwisko = result.getString("imie") + " " + result.getString("nazwisko");
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return imieNazwisko;
}

下面是我如何尝试在comboBox中添加更多元素的方法:

try {
    ResultSet result = baza.stmt.executeQuery("SELECT id_kierowca FROM kierowca;");
    while(result.next()) {
        view.kierowcaCbModel.addElement(baza.getKierowcaImieNazwisko(result.getInt("id_kierowca")));
    }
} catch(Exception ex) {
    ex.printStackTrace();
}

问题是,我的最后一个组合框只有表“kierowca”的第一行。如何解决这个问题

编辑: 此外,我还可以像view.kierowcaCb.addElement("Hallo");一样将新项手动添加到comoBox中,并且它在我的最终comboBox中可见


共 (1) 个答案

  1. # 1 楼答案

    由于在Jframe中初始化模型后要修改模型,因此需要重新绘制swing

    试试看

    SwingUtilities.updateComponentTreeUI(frame);
    

    如果仍然不起作用,那么在完成上述步骤后,请尝试

    frame.invalidate();
    frame.validate();
    frame.repaint();
    

    如果重新喷漆不起作用,则根据文件:

    • 您必须将ComboBoxModel添加到JComboBox
    • 你可以在那里add / remove / modify输入值,

    • 在刷新视图的API中实现的事件(JComboBox) 没有代码行

    • 所有更新必须在Event Dispatch Thread