【问题标题】:how to update the jcombobox immediately when the table in database get updated in java当数据库中的表在java中更新时如何立即更新jcombobox
【发布时间】: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

【问题讨论】:

    标签: java swing jdbc jframe jcombobox


    【解决方案1】:

    JComboBox comboBoxVenderName = new JComboBox();

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

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

    comboBox.setModel( the updated model );
    

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

    【讨论】:

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