当数据库中的表在java中更新时如何立即更新jcombobox

Posted

技术标签:

【中文标题】当数据库中的表在java中更新时如何立即更新jcombobox【英文标题】:how to update the jcombobox immediately when the table in database get updated in java 【发布时间】:2014-05-24 19:49:03 【问题描述】:

我正在开发 java 应用程序。我在应用程序中有两个框架。我想将一个框架中输入的数据反映到另一个框架运行时。

如上图所示,当我在采购窗口的供应商窗口组合框中按下提交按钮时,应立即更新。 我应该进行哪些必要的更改?

这是我在数据库中存储数据的 frame1 代码:

public void btnSubmitAction(ActionEvent e)

    String custId,custNm;

    if(txtSupplierID.getText().equals("") || txtSupplierName.getText().equals("") )
    
        System.out.println("Please enter valid information!!!!!!!");
    
    else
    
        try
            setConnectin();
            String str = "Insert into SupplierMasterTable values(?,?)";
            pstmt = conn.prepareStatement(str);
            pstmt.setString(1,txtSupplierID.getText());
            pstmt.setString(2, txtSupplierName.getText());
            int x = pstmt.executeUpdate();
            System.out.println("Supplier registered successfully");
            txtSupplierID.setText("");
            txtSupplierName.setText("");
            conn.close();
        catch(Exception e1)
            e1.printStackTrace();
        

    


这是我从数据库中获取数据的 frame2 代码:

    JComboBox comboBoxVenderName = new JComboBox();
    comboBoxVenderName.setFont(new Font("Times New Roman", Font.PLAIN, 15));
    comboBoxVenderName.setBounds(144, 88, 137, 21);
    panel.add(comboBoxVenderName);

    try
        setConnectin();
        String str = "select * from SupplierMasterTable";
        stmt = conn.createStatement();
        rs = stmt.executeQuery(str);
        while(rs.next())
        
            comboBoxVenderName.addItem(rs.getString("Supplier_Name"));
        
        conn.close();
    catch(Exception e2)
        e2.printStackTrace();
    

我浏览了以下链接,但没有得到可行的解决方案:

Immediate update to JCombobox in Java

Synchronize a jCombobox with a mysql Table

【问题讨论】:

【参考方案1】:

JComboBox comboBoxVenderName = new JComboBox();

当您要刷新数据时,不要创建新的组合框。

相反,您应该创建一个新的 DefaultComboBoxModel 并将数据添加到模型中。然后使用以下命令更新现有组合框中的数据:

comboBox.setModel( the updated model );

另外,不要使用空布局!!!您不应该使用 setBounds() 方法。 Swing 旨在与布局管理器一起使用。

【讨论】:

你能简单解释一下吗?我已经尝试使用DefaultComboBoxModel作为第一个链接的参考。但我没有得到想要的结果。请帮助 我确实简要解释了。您将数据添加到模型,然后将模型添加到组合框。发布您的SSCCE(不使用数据库)来证明您的问题。那就是创建一个简单的框架,其中包含一个加载了数据的组合框和一个“刷新”按钮。刷新按钮将简单地将硬编码数据加载到模型中,然后更新组合框。证明基本概念有效。一旦你得到这个刷新方法,你就可以使用你的数据库使方法动态化。

以上是关于当数据库中的表在java中更新时如何立即更新jcombobox的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP:hasOne 相关表在更新时保存多个条目

如何制作一个自动更新 Hive 的表

Filenet 用户缓存刷新

当字段作为变量/参数输入时如何创建更新语句

在更新 mysqlDatabase 内容时刷新 django 模板中的表内容

如何正确更新反应钩子状态中的数组