我在名为customer的数据库中有一个表,其中包含代码和名称等属性。我在其他表中调用了客户的值,并使用组合框显示它。我已经在组合框中显示了代码,而我想要做的就是当我在组合框中选择代码时,值'name'可以显示在文本字段中,'name'基于代码显示。
这是我的代码:
try {
Connections con = new Connections();
con.setConnections();
String sql = "select * from customer";
Statement stat = con.conn.createStatement();
ResultSet rs=stat.executeQuery(sql);
while (rs.next()){
cmb_custCode.addItem(rs.getString("custCode"));
txt_custName.setText(rs.getString("custName")); // i'm confused in here, how can i call the name based on the code
}
}
catch(Exception e){
e.printStackTrace();
}
}
例如:
当在组合框中选择代码'B0001'时,Jtextfield也必须显示“Bob”,因为代码B0001属于Bob。
答案 0 :(得分:2)
编辑:
确定。因此,假设您有一位用户Bob
,而他的code
是B001
。
ItemStateChanged
方法
...
String code = (String) cmb.getSelectedItem();
try{
String sql = "SELECT * FROM customer WHERE code='"+code"'"
PreparedStatement prst = con.prepareStatement();
ResultSet rs = prst.executeQuery(sql);
String name = "";
while(rs.next()){
name = rs.getString('name');
}
txt.setText(name);
}catch(Exception ex){
}
你不应该在itemStateChanged
内部实际连接,但这只是一个例子。
答案 1 :(得分:1)
看看这篇文章。它告诉您有关如何使用组合框的所有信息。 http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html
答案 2 :(得分:0)
在您自己的示例代码中,您可以将封闭类声明为ActionListener。然后在声明cmb_custCode
后使用以下命令...
cmb_custCode.addActionListender(this);
...
实现ActionListener时,必须实现actionPerformed()方法。我已经完成了以下内容:http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html#listeners但适应了您的代码
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox)e.getSource();
String custCode = (String)cb.getSelectedItem();
updateLabel(custCode);
}
我在路径上的示例中保留了updateLabel(String custCode)的封装。您可以假设该方法定义为:
private void updateLabel(String code) {
txt_custName.setText(map_cust.get(code));
}
我用map_cust将地图放入其中。它只是代码和名称之间的映射,存储在字段
中Map<String, String> map_cust = new HashMap<String, String>();
并填充它,这将在您的代码中,在检索ResultSet
之后...
cmb_custCode.addItem(rs.getString("custCode"));
map_cust.put(rs.getString("custCode"), rs.getString("custName");
因此,当你得到你的结果集时,你填充一个地图和你的组合框,当客户端从组合框中选择项目时,他会触发并执行actionPerformed,进入已注册的监听器,在那里操作事件以获取selected item,String是map_cust的关键字,包含映射的键,值对,custCode映射到custName。当从地图中提取该名称时,它可用于更新标签的文本。
答案 3 :(得分:0)
这是我的代码,它解决了我的问题。希望它对你也有用:)。
private void fillText(){
String code = (String) cmb_custCode.getSelectedItem();
try {
Connections con = new Connections();
con.setConnections();
String sql = "select * from customer WHERE custCode='"+code +"'";
Statement stat = con.conn.createStatement();
ResultSet rs=stat.executeQuery(sql);
while (rs.next()){
txt_custName.setText(rs.getString("custName"));
}
}
catch(Exception e){
e.printStackTrace();
}