使用多个对象的数据填充 JComboBox
Populate JComboBox with Multiple Object's Data
如何从对象填充 JComboBox 数据。我需要做的是将数据从对象获取到组合框。下面是我从数据库中查询数据的方式。
/*Author Class*/
package some;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Author {
private int authId;
private String authName;
private String authInitals;
public int getAuthId() {
return authId;
}
public void setAuthId(int authId) {
this.authId = authId;
}
public String getAuthName() {
return authName;
}
public void setAuthName(String authName) {
this.authName = authName;
}
public String getAuthInitals() {
return authInitals;
}
public void setAuthInitals(String authInitals) {
this.authInitals = authInitals;
}
public void getAuth() {
DBConnection db;
Connection dbcon;
try{
db = new DBConnection();
dbcon = db.connect();
Statement s = DBConnection.connect().createStatement();
ResultSet rs=s.executeQuery("SELECT idAuthor,AuthorName FROM `lms`.`author`");
if(rs.next()) {
this.setAuthId(rs.getInt(1));
this.setAuthName(rs.getString(2));
}
} catch(SQLException e) {
e.printStackTrace();
}
}
}
/*end of class*/
这是 netbeans 自动生成的代码:
cmbxAuth1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
cmbxAuth1MouseClicked(evt);
}
});
cmbxAuth1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cmbxAuth1ActionPerformed(evt);
}
});
jPanelUpdateBooks.add(cmbxAuth1, new org.netbeans.lib.awtextra.AbsoluteConstraints(150, 240, 350, 30));
cmbxAuth1 = new javax.swing.JComboBox<>();
从 UI 我添加了通过 class 使用查询检索到的数据,如下所示:
private void cmbxAuth1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
au.getAuth();
cmbxAuth.addItem(au.getAuthId()+" | "+au.getAuthName());
}
我将输出与作为 Int 的 Id 和作为字符串的 Name 连接起来。现在这不会将从数据库查询的所有数据加载到组合框,我做错了什么?解决办法是什么 ?
if(rs.next()) {
this.setAuthId(rs.getInt(1));
this.setAuthName(rs.getString(2));
}
您只有一个 Author 对象实例。每次从 ResultSet 中读取一行时,都会重置作者的 id/name。您需要:
创建一个新的作者对象并将该对象添加到作者列表中。然后您需要遍历此列表并将每个作者添加到组合框中。基本上,数据库代码不属于 Author 对象。
每次从 ResultSet 中读取一行时,都会将 id/name 添加到组合框中。这是数据库逻辑不属于作者 class.
的另一个原因
如何从对象填充 JComboBox 数据。我需要做的是将数据从对象获取到组合框。下面是我从数据库中查询数据的方式。
/*Author Class*/
package some;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Author {
private int authId;
private String authName;
private String authInitals;
public int getAuthId() {
return authId;
}
public void setAuthId(int authId) {
this.authId = authId;
}
public String getAuthName() {
return authName;
}
public void setAuthName(String authName) {
this.authName = authName;
}
public String getAuthInitals() {
return authInitals;
}
public void setAuthInitals(String authInitals) {
this.authInitals = authInitals;
}
public void getAuth() {
DBConnection db;
Connection dbcon;
try{
db = new DBConnection();
dbcon = db.connect();
Statement s = DBConnection.connect().createStatement();
ResultSet rs=s.executeQuery("SELECT idAuthor,AuthorName FROM `lms`.`author`");
if(rs.next()) {
this.setAuthId(rs.getInt(1));
this.setAuthName(rs.getString(2));
}
} catch(SQLException e) {
e.printStackTrace();
}
}
}
/*end of class*/
这是 netbeans 自动生成的代码:
cmbxAuth1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
cmbxAuth1MouseClicked(evt);
}
});
cmbxAuth1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cmbxAuth1ActionPerformed(evt);
}
});
jPanelUpdateBooks.add(cmbxAuth1, new org.netbeans.lib.awtextra.AbsoluteConstraints(150, 240, 350, 30));
cmbxAuth1 = new javax.swing.JComboBox<>();
从 UI 我添加了通过 class 使用查询检索到的数据,如下所示:
private void cmbxAuth1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
au.getAuth();
cmbxAuth.addItem(au.getAuthId()+" | "+au.getAuthName());
}
我将输出与作为 Int 的 Id 和作为字符串的 Name 连接起来。现在这不会将从数据库查询的所有数据加载到组合框,我做错了什么?解决办法是什么 ?
if(rs.next()) {
this.setAuthId(rs.getInt(1));
this.setAuthName(rs.getString(2));
}
您只有一个 Author 对象实例。每次从 ResultSet 中读取一行时,都会重置作者的 id/name。您需要:
创建一个新的作者对象并将该对象添加到作者列表中。然后您需要遍历此列表并将每个作者添加到组合框中。基本上,数据库代码不属于 Author 对象。
每次从 ResultSet 中读取一行时,都会将 id/name 添加到组合框中。这是数据库逻辑不属于作者 class.
的另一个原因