gpt4 book ai didi

java - 结果集并不总是显示在 JTable 中

转载 作者:行者123 更新时间:2023-11-29 20:43:37 24 4
gpt4 key购买 nike

我正在用 Java 创建一个应用程序,它从 MySQL 数据库检索一些信息,然后将其显示在屏幕上的 JTable 中。

我用来获取信息并将其放入 DefaultListModel<> 的代码如下所示。然后将 DefaultListModel<> 提供给 JTable,JTable 将信息显示到屏幕上。

SwingWorker<Void, Void> worker = new SwingWorker< Void, Void>() {

@Override
public Void doInBackground() {

String SQL = "SELECT * FROM AddABill";

try {
Statement stmt = GlobalVars.conn.createStatement();

ResultSet rs = stmt.executeQuery(SQL);

menuOptions.clear();

while(rs.next()){

menuOptions.addElement(rs.getString(1) + " - " + rs.getString(2));
}

rs.close();
stmt.close();
}

catch (SQLException e) {
System.out.println("An Error Was Detected! :/");
}

return null;
}

@Override
public void done(){
loadingGif.setVisible(false);
}

};

worker.execute();

我遇到的问题是,有时信息会显示在屏幕上,有时则不会。由于使用的查询没有变化,我假设它与 MySQL 连接有关。

JTable 和 MenuOptions 的设置如下

menuOptions = new DefaultListModel<>();
menuOptions.addElement("");

menuList = new JList<>(menuOptions);
menuList.setFont(new Font("Myriad Hebrew", Font.PLAIN, 32));
menuList.setBackground(Color.decode("#005952"));
menuList.setForeground(Color.decode("#BEC423"));
menuList.setSelectionBackground(Color.decode("#660033"));
menuList.setSelectionForeground(Color.decode("#FFFFFF"));

所以我想知道的问题是如何确保信息始终显示在屏幕上。下面是显示和不显示时的图片。

显示:

Displayed

不显示:

Not Displayed

最后一点,为了获取要显示的信息,我必须继续重新运行代码,直到最终显示为止。

非常感谢任何帮助。

最佳答案

@垃圾神@mKorbel

感谢大家的帮助,我已经通过将 did() 函数中的信息添加到表中来解决问题。代码如下

SwingWorker<Void, Void> worker = new SwingWorker< Void, Void>() {

String[] billItems = null;

@Override
public Void doInBackground() {

String SQL = "SELECT * FROM AddABill";

try {
Statement stmt = GlobalVars.conn.createStatement();

ResultSet rs = stmt.executeQuery(SQL);

//Set The Cursor To Last Position
rs.last();

int totalRows = rs.getRow();

billItems = new String[totalRows];

//Set The Cursor Back To The Start
rs.beforeFirst();

while(rs.next()){
int rowNum = rs.getRow() - 1;
billItems[rowNum] = rs.getString(1) + " - " + rs.getString(2);
}

rs.close();
stmt.close();
}

catch (SQLException e) {
System.out.println("An Error Was Detected! :/");
}

return null;
}

@Override
public void done(){
menuOptions.clear();

for(int i = 0; i < billItems.length; i++){
menuOptions.addElement(billItems[i]);
}

loadingGif.setVisible(false);
}

};

谢谢

托马斯。

关于java - 结果集并不总是显示在 JTable 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38509422/

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