在JPanel中,我有一个组合框,以便用详细信息更新组合框。我需要从后台数据库查询。这会使整个GUI冻结。
if (ccyPairs.size() == 0) {
try {
String query = "SELECT * FROM " + PropertyFile.getInstance().getSmfTable() + " WHERE SECURITYTYPE = 4 ";
Security[] securities = SecurityMaster.getInstance().getData(query, false);
for (Security security : securities) {
String Symbol = security.getSymbol();
ccyPairs.add(Symbol);
}
} catch (Exception exception) {
Log.error(getClass().getName(), "getValidSymbols", "Exception occurred while retrieving fx symbols from smf table " + exception.getMessage());
}
return ccyPairs;
}
return ccyPairs;
在这里Security[]securities=SecurityMaster.getInstance().getData(query,false);是对数据库的调用。
谁能解释一下如何解决这个问题吗?
您应该按照Worker Threads和SwingWorker中的说明使用SwingWorkers,以便在DB获取数据时释放EDT。