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

时间:2014-05-24 19:49:04

标签: java swing jdbc jframe jcombobox

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

enter image description here

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

这是我的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 个答案:

答案 0 :(得分:2)

  

JComboBox comboBoxVenderName = new JComboBox();

如果要刷新数据,请不要创建新的组合框。

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

comboBox.setModel( the updated model );

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