Tree: fixed wide selection if scrolled horizontally

This commit is contained in:
Karl Tauber
2019-12-31 09:49:56 +01:00
parent b6fb06bc65
commit 452452dcc9
4 changed files with 88 additions and 2 deletions

View File

@@ -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

View File

@@ -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 ) ) {

View File

@@ -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");

View File

@@ -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
}