Reputation: 13
I have JTree. Child nodes are loaded dynamically when the parent node is expanded (treeExpanded event). Their loading time is a few seconds. I want to display the message "Wait" in the JLabel before starting this process. But it is displayed only after the end of the process. What's my mistake?
class TFrame extends JFrame {
private DefaultMutableTreeNode root;
private DefaultTreeModel model;
private JLabel label;
TFrame(){
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300,300);
JPanel lPanel=new JPanel();
label=new JLabel();
lPanel.add(label);
add(BorderLayout.SOUTH,lPanel);
JPanel panel=new JPanel();
root=new DefaultMutableTreeNode("Root");
model=new DefaultTreeModel(root,true);
JTree tree=new JTree(model);
tree.addTreeExpansionListener(new TreeExpansionListener() {
@Override
public void treeExpanded(TreeExpansionEvent event) {
label.setText("Wait");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
model.insertNodeInto(new DefaultMutableTreeNode("Node1"),root,0);
model.insertNodeInto(new DefaultMutableTreeNode("Node2"),root,1);
}
@Override
public void treeCollapsed(TreeExpansionEvent event) {
}
});
panel.add(tree);
add(BorderLayout.CENTER,panel);
setVisible(true);
}
}
Upvotes: 0
Views: 33