-
Bug
-
Resolution: Fixed
-
P4
-
1.4.0
-
hopper
-
x86
-
windows_98, windows_2000
-
Verified
Name: jk109818 Date: 01/11/2002
FULL PRODUCT VERSION :
java version "1.4.0-beta3"
Java(TM) 2 Runtime Environment, Standard Edition (build
1.4.0-beta3-b84)
Java HotSpot(TM) Client VM (build 1.4.0-beta3-b84, mixed
mode)
FULL OPERATING SYSTEM VERSION :
Windows Millennium [Version 4.90.3000]
A DESCRIPTION OF THE PROBLEM :
JTree no longer seems to update its view properly
when adding a node after removing a set of nested
and selected tree nodes.
See steps to reproduce.
REGRESSION. Last worked in version merlin-beta3
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Run attached test case
The following things happen:
- A JTree with a DefaultTreeModel is created
- The root node is 'root'
- 'node1' is added to 'root'
- 'node1a' is added to 'node1'
- 'node2' is added to 'root'
- 'node1', 'node1a' and 'node2' are selected
- 'node1' and 'node2' are removed from 'root'
('node1a' is implicitly removed too)
- now a new node ('node3') is added to root
EXPECTED VERSUS ACTUAL BEHAVIOR :
Expected result:
'node3' should be visible on the screen (it is in 1.3.1)
Actual result:
'node3' isn't displayed
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;
public class TreeCase extends JFrame {
public TreeCase() {
super("TreeCase");
DefaultMutableTreeNode root = new DefaultMutableTreeNode
("root");
DefaultTreeModel model = new DefaultTreeModel(root);
JTree tree = new JTree(model);
setContentPane(tree);
setSize(new Dimension(608, 384));
show();
DefaultMutableTreeNode node1 = new
DefaultMutableTreeNode("node1");
root.add(node1);
model.nodesWereInserted(root, new int[]{0});
tree.expandRow(0);
DefaultMutableTreeNode node1a = new
DefaultMutableTreeNode("node1a");
node1.add(node1a);
model.nodesWereInserted(node1, new int[]{0});
tree.expandRow(1);
DefaultMutableTreeNode node2 = new
DefaultMutableTreeNode("node2");
root.add(node2);
model.nodesWereInserted(root, new int[]{1});
tree.setSelectionInterval(1, 3);
root.remove(node1);
root.remove(node2);
model.nodesWereRemoved(root, new int[]{0, 1}, new Object
[]{node1, node2});
DefaultMutableTreeNode node3 = new
DefaultMutableTreeNode("node3");
root.add(node3);
model.nodesWereInserted(root, new int[]{0});
tree.expandRow(0);
}
public static void main(String[] args) {
new TreeCase();
}
}
---------- END SOURCE ----------
Release Regression From : 1.3.1_02
The above release value was the last known release where this
bug was knwon to work. Since then there has been a regression.
(Review ID: 137837)
======================================================================