Browse Source

Pull request #9539: REPORT-76259 【迭代】【数据连接面板为空】概率出现编辑数据集一直加载中

Merge in DESIGN/design from ~YVAN/design:release/11.0 to release/11.0

* commit '31c0eb2d15da32f694be1e42d1e99818b763a468':
  REPORT-76259 【迭代】【数据连接面板为空】概率出现编辑数据集一直加载中 根据评审意见修改下,不特地分出两个方法了
  REPORT-76259 【迭代】【数据连接面板为空】概率出现编辑数据集一直加载中 【问题原因】远程设计下,数据集面板的初始化中有两个耗时操作(下拉框取数据连接、TableViewList根据下拉框值取连接对应的所有表),对应两个SwingWorker,设为A和B;数据集面板本身的展示过程也对应一个SwingWorker(需要查询此连接是否有权限),设为C;当C执行完后,会在done方法里调用数据集面板的setVisible方法以让它展示,如果此时A和B才执行完doInbackground,准备执行done的时候(done的执行是invokeLater的),C的面板先显示了,会导致它们的done方法会被已经显示的模态dialog给阻塞住,从而无法完成面板数据更新 【改动思路】将setVisible方法用invokeLater包一层,让A和B的done方法不被阻塞 【review建议】无
newui
Yvan 2 years ago
parent
commit
3675f7bb86
  1. 4
      designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java

4
designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java

@ -487,7 +487,11 @@ public class TableDataTreePane extends BasicTableDataTreePane {
doPropertyChange(dg, tdNamePanel, oldName); doPropertyChange(dg, tdNamePanel, oldName);
} }
}); });
// 有些数据集(DBTableData)面板的初始化过程中是包含了SwingWorker处理(查询数据连接、查表等)的
// 如果这里直接setVisible,可能阻塞SwingWorker的done方法,导致面板渲染出现问题
SwingUtilities.invokeLater(() -> {
dg.setVisible(true); dg.setVisible(true);
});
} }
@Override @Override

Loading…
Cancel
Save