gpt4 book ai didi

java - TableModel 未加载来自通过 JTabbedPane 的 MouseClick 上的 JPA 查询的数据

转载 作者:行者123 更新时间:2023-12-01 17:30:25 28 4
gpt4 key购买 nike

我有一个Java类,我创建一个查询(带有EclipseLink的JPA)以在单击JTabbedPane时从数据库加载信息,数据被加载到绑定(bind)到JTable的TableModel中。我使用 MouseClicked 的 MouseEvent 来获取选定的选项卡。但是有些表无法加载,我感觉好像没有单击任何内容,但是当我浏览选项卡并返回到无法加载的选项卡时,它最终有时会加载数据。我的代码如下:

private void jTabbedPane1MouseClicked(java.awt.event.MouseEvent evt) {  
int selectTab = jTabbedPane1.getSelectedIndex();
if (selectTab == 1) {
bookValueTable.getColumnModel().getColumn(0).setMaxWidth(150);
bookValueTable.getColumnModel().getColumn(1).setMaxWidth(150);
if (!tab2Opened) { //this makes sure the data is not loaded multiple time....
tab2Opened = true;
Query q = em.createQuery("select e from EnterpriseInvestments e Where e.acctYear = :acctYear");
q.setParameter("acctYear", acctYear);
List<EnterpriseInvestments> resultList = q.getResultList();
for(EnterpriseInvestments p: resultList){
Object row[] = {p.getEnterprise().getRcNo(), p.getAcctYear(), p.getInvestmentItem(),
nf.format(p.getInvestmentAmount())};
shareCapitalModel.addRow(row);
}
}
bookValueTable.setRowSorter(new TableRowSorter(shareCapitalModel));
}

我不知道问题出在哪里:JPA、TabbedPane 还是 EventHandler!

最佳答案

除了 @JB 对监听器的指导之外,我怀疑 JPA 查询中的延迟正在阻塞事件调度线程 (EDT)。尽管您必须在 EDT 上更新表模型,但您可以在 SwingWorkerdoInBackground() 方法中执行查询,如 API 中所示。

关于java - TableModel 未加载来自通过 JTabbedPane 的 MouseClick 上的 JPA 查询的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11600748/

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