diff --git a/CHANGELOG.md b/CHANGELOG.md index 561ec991..5ff0496d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ FlatLaf Change Log ================== +## Unreleased + +- Tree: Fixed wide selection if scrolled horizontally. + + ## 0.23 - Updated colors in "Flat Light" and "Flat IntelliJ" themes with colors from diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTreeUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTreeUI.java index 59566495..141dd2a7 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTreeUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatTreeUI.java @@ -232,7 +232,7 @@ public class FlatTreeUI g.setColor( isDropRow ? UIManager.getColor( "Tree.dropCellBackground" ) : (hasFocus ? selectionBackground : selectionInactiveBackground) ); - g.fillRect( 0, bounds.y, clipBounds.width, bounds.height ); + g.fillRect( 0, bounds.y, tree.getWidth(), bounds.height ); // paint expand/collapse icon if( shouldPaintExpandControl( path, row, isExpanded, hasBeenExpanded, isLeaf ) ) { diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DataComponentsPanel.java b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DataComponentsPanel.java index c46a0622..48344b26 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DataComponentsPanel.java +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DataComponentsPanel.java @@ -21,6 +21,7 @@ import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import javax.swing.*; import javax.swing.table.*; +import javax.swing.tree.*; import net.miginfocom.swing.*; /** @@ -171,6 +172,32 @@ class DataComponentsPanel //---- tree1 ---- tree1.setShowsRootHandles(true); tree1.setEditable(true); + tree1.setModel(new DefaultTreeModel( + new DefaultMutableTreeNode("JTree") { + { + DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("colors"); + node1.add(new DefaultMutableTreeNode("blue")); + node1.add(new DefaultMutableTreeNode("violet")); + node1.add(new DefaultMutableTreeNode("red")); + node1.add(new DefaultMutableTreeNode("yellow")); + add(node1); + node1 = new DefaultMutableTreeNode("sports"); + node1.add(new DefaultMutableTreeNode("basketball")); + node1.add(new DefaultMutableTreeNode("soccer")); + node1.add(new DefaultMutableTreeNode("football")); + node1.add(new DefaultMutableTreeNode("hockey")); + add(node1); + node1 = new DefaultMutableTreeNode("food"); + node1.add(new DefaultMutableTreeNode("hot dogs")); + DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("pizza"); + node2.add(new DefaultMutableTreeNode("pizza aglio e olio")); + node2.add(new DefaultMutableTreeNode("pizza margherita bianca")); + node1.add(node2); + node1.add(new DefaultMutableTreeNode("ravioli")); + node1.add(new DefaultMutableTreeNode("bananas")); + add(node1); + } + })); scrollPane3.setViewportView(tree1); } add(scrollPane3, "cell 1 1,growx"); diff --git a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DataComponentsPanel.jfd b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DataComponentsPanel.jfd index 42599f18..1c263544 100644 --- a/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DataComponentsPanel.jfd +++ b/flatlaf-demo/src/main/java/com/formdev/flatlaf/demo/DataComponentsPanel.jfd @@ -1,4 +1,4 @@ -JFDML JFormDesigner: "7.0.0.0.194" Java: "11.0.2" encoding: "UTF-8" +JFDML JFormDesigner: "7.0.0.0.194" Java: "13.0.1" encoding: "UTF-8" new FormModel { contentType: "form/swing" @@ -89,6 +89,60 @@ new FormModel { name: "tree1" "showsRootHandles": true "editable": true + "model": new javax.swing.tree.DefaultTreeModel( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "JTree" + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "colors" + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "blue" + } ) + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "violet" + } ) + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "red" + } ) + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "yellow" + } ) + } ) + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "sports" + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "basketball" + } ) + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "soccer" + } ) + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "football" + } ) + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "hockey" + } ) + } ) + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "food" + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "hot dogs" + } ) + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "pizza" + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "pizza aglio e olio" + } ) + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "pizza margherita bianca" + } ) + } ) + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "ravioli" + } ) + add( new javax.swing.tree.DefaultMutableTreeNode { + userObject: "bananas" + } ) + } ) + } ) auxiliary() { "JavaCodeGenerator.variableLocal": false }