mihhha
mihhha

Reputation: 13

JTree. Wrong gui update order

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

Answers (0)

Related Questions