gpt4 book ai didi

java - JTable 中的 JComboBox 不显示选项,只有正确数量的空白选项

转载 作者:行者123 更新时间:2023-11-29 05:39:27 25 4
gpt4 key购买 nike

我正在尝试将数据库表(称为 stock_info)中的列(称为部分)的值读取到 JComboBox 中,该 JComboBox 位于 JTable 中(称为 tblContents)。我的代码如下。运行该文件时,组合框出现在表中,当单击它们以选择一个选项时,它们会展开 8 个空白选项,因为数据库表的列中有 8 个值。

谁能解释一下为什么选项都是空白的?

import java.sql.*;
import javax.swing.*;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableColumn;

public class Sale extends javax.swing.JFrame {

PreparedStatement pst = null;
Connection conn = null;
ResultSet rs = null;
int count = 0;

public void FillCmbs() {

String sql = "SELECT * from stockinfo ORDER BY parts";
int size = 0;

try {
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
while(rs.next()){
size++;
}
String[] items = new String[size];
while (rs.next()) {
items[count] = rs.getString("parts");
count++;
}
JComboBox jcb = new JComboBox(items);
TableColumn tc = tblContents.getColumnModel().getColumn(1);
TableCellEditor tce = new DefaultCellEditor(jcb);
tc.setCellEditor(tce);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e);
}
}

public Sale() {
initComponents();
conn = DBConnect.ConnectDB();

}

private void formWindowActivated(java.awt.event.WindowEvent evt) {
FillCmbs();
}

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Sale().setVisible(true);

}
});
}
// Variables declaration - do not modify
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable tblContents;
// End of variables declaration
}

最佳答案

while之后循环遍历 ResultSet rs随后while永远不会进入循环,因为没有更多可用记录和 rs.next()返回 false

while (rs.next()) {
items[count] = rs.getString("parts");
...
}

而不是确定 String 的大小数组 items使用单独的循环,使用 Vector<String>构建字符串集合。然后可以将其直接传递给 JComboBox ResultSet 的单个导航之后 的构造函数.

Vector<String> data = new Vector<>();
while (rs.next()) {
data.add(rs.getString("parts"));
}

count = data.size();
JComboBox<String> jcb = new JComboBox<>(data);

作为奖励 count变量等于 data.size()

关于java - JTable 中的 JComboBox 不显示选项,只有正确数量的空白选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18174733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com