如何将选定的 JComboBox 数据项提取到 Swing 文本字段中?

Posted

技术标签:

【中文标题】如何将选定的 JComboBox 数据项提取到 Swing 文本字段中?【英文标题】:How to fetch selected item of JComboBox data into Swing text fields? 【发布时间】:2018-08-22 07:33:05 【问题描述】:

我的 H2 数据库中有一个表。

item_name | sac_hsn | price | Tax

我有JTextfield 字段用于hsn_codeprice

现在我想做的是,当我从JComboBox 中选择item_name 时,该项目的hsn_codeprice 的数据也应该在文本字段中获取。

我已经这样做了,但它不起作用:-

当我在组合框中运行代码时,它不显示任何项目。一片空白。

Connection connection = null;
ResultSet rs;

public void commonMethodForSt(String query) 
    try 
        Statement st = connection.createStatement();
        rs = st.executeQuery(query);

     catch (Exception e) 
        // TODO Auto-generated catch block
       

那么..

public void populateItemNameAndDetails() 
    try 
        Class.forName("org.h2.Driver");
        con = 
DriverManager.getConnection("jdbc:h2:C:/SimpleGST/GST","sa","");
        String pname = itemcombo.getSelectedItem().toString();
        commonMethodForSt("select * from additems where item_name='"+pname+"'");
        if(rs.next()) 
//              System.out.print(set_com);
            sachsntext.setText(rs.getString("sac_hsn"));
            pricetext.setText(rs.getString("price"));
            taxtext.setText(rs.getString("TAX_RATE"));
        
     catch (SQLException e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
     catch (ClassNotFoundException e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
    


之后我在组合框中设置了一个ActionListener,并在其中调用了方法。

 itemcombo = new JComboBox();
    itemcombo.addActionListener(new ActionListener() 
        public void actionPerformed(ActionEvent arg0) 

               populateItemNameAndDetails();

        
    );

【问题讨论】:

如需尽快获得更好的帮助,请发帖 minimal reproducible example 或 Short, Self Contained, Correct Example。硬编码一些数据来替换数据库。 顺便说一句:将 catch (Exception e) // TODO Auto-generated catch block 更改为 catch (Exception e) e.printStackTrace(); 或者换一种说法:不要忽略异常!他们准确地告诉我们出了什么问题。除非实现了日志记录,否则至少调用Throwable.printStackTrace() 【参考方案1】:

好的,我通过创建一个仅将数据填充到组合框的方法解决了这个问题。

public void populateItemCombo() 
    con = DriverManager.getConnection("jdbc:h2:C:/SimpleGST/GST", "sa", "");
    itemcombo.addItem(" ");
    commonMethodForSt("select * from additems");
    while (rs.next()) 
        itemcombo.addItem(rs.getString("item_name"));
    

并调用方法。

并且我作为问题提出的代码保持不变。

【讨论】:

以上是关于如何将选定的 JComboBox 数据项提取到 Swing 文本字段中?的主要内容,如果未能解决你的问题,请参考以下文章

java中如何将数据显示到jcombobox上?

如何将JComboBox添加到JTable单元格?

更新 JComboBox

如何将 JButton 放在 JComboBox 中

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

如何将 JComboBox 事件处理程序的字符串放入变量中进行查询?