我有一个Netbeans平台应用程序。打开主框架后,我想填充一个GUI表,其中包含从数据库中提取的元素。
拥有此代码的最佳位置在哪里?我已经尝试了 componentOpened()方法,但我得到了一个线程死锁。即使使用 invokeLater(),我也会遇到线程问题。
@Override
public void componentOpened() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
List<UserBO> al = UserDelegate.getInstance().getUsers();
for (UserBO u : al) {
System.out.println("User " + u);
}
}
});
// TODO add custom code on component opening
}
上面的代码总是导致线程死锁。我不确定componentOpened()是否正确的方法是使用此代码。
答案 0 :(得分:0)
解。将DB读取代码放在组件的构造函数中(即“Top Component”)。然后使用Netbeans RequestProcessor。
public EditorTopComponent() {
initComponents();
setName(Bundle.CTL_EditorTopComponent());
setToolTipText(Bundle.HINT_EditorTopComponent());
RequestProcessor.getDefault().post(new Runnable () {
@Override
public void run() {
List<UserBO> al = UserDelegate.getInstance().getUsers();
System.out.println("Users dude ");
for (UserBO u : al) {
System.out.println("User " + u);
}
}
});
}
现在可以使用