I have a Jtree, and 2 buttons to select and unselect all nodes. I made an attempt like this:
selectAll = new JButton("Select all");
selectAll.addActionListener(new ActionListener (){
@Override
public void actionPerformed(ActionEvent e) {
int row = 0;
while (row < curvesTree.getRowCount())
{
curvesTree.expandRow(row);
row++;
}
int entradasTree = curvesTree.getRowCount();
for(int i=0; i<entradasTree; i++){
TreePath path = curvesTree.getPathForRow(i);
curvesTree.setSelectionPath(path);
}
}
});
unselectAll = new JButton("Unselect all");
unselectAll.addActionListener(new ActionListener (){
@Override
public void actionPerformed(ActionEvent e) {
curvesTree.clearSelection();
}
});
The unselect button seems to be working, but the select all only expands the JTree and selects the last node. I think every time a node is selected programatically, I'm unselecting the former one.
JTree is configured like this:
curvesTree = new JTree(rootNode);
curvesTree.setExpandsSelectedPaths(true);
curvesTree.getSelectionModel().setSelectionMode(TreeSelectionModel.
DISCONTIGUOUS_TREE_SELECTION);
the unselect happens because you are setting a new selection path instead of adding. In the loop after expanding, instead do
curvesTree.addSelectionPath(...)
EDIT
reading api is always instructive, even after years ;-) Just found a much simper method, which leaves all the work to the tree:
tree.setSelectionInterval(0, tree.getRowCount());
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With