Sauk kumar

Greenhorn
+ Follow
since Feb 20, 2013
Merit badge: grant badges
For More
Cows and Likes
Cows
Total received
0
In last 30 days
0
Total given
0
Likes
Total received
1
Received in last 30 days
0
Total given
0
Given in last 30 days
0
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by Sauk kumar

Funny thing is that, Oracle yet not added to the bug list although I submitted this 1 week back.
11 years ago
Problem is the vertical scroller will not go really down but stops just one node earlier. This works fine if you have kept the split view open. In my understanding, this is because the of following issue in java itself.

One touch expandable button of JSplitPane will reduce the vertical scroll bar value by 15 if vertical scroll bar is scrolled to maximum value and then, clicked one-touch expandable button to minimise the left pane.

Anyone can verify this by (use attached sample test) seeing GUI where scroll bar position is changed. Same can also be verified using console output.

In my opinion this is a bug and I have reported this as a bug in Oracle – Java.
but yet not accepted.

Any workaround?

import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;

/**
* Sample code.
*
* @author Saurav.Kumar
*
*/
public class OneTouchBug {

public void playUI() {
DefaultMutableTreeNode root;
root = new DefaultMutableTreeNode(0);
final JTree tree = new JTree(root);
JLabel bugLabel = new JLabel(
"<html>One touch button will reduce the vScroll <br>" +
"value by 15 if it is scrolled to maximum value and <br>" +
" then click one-touch Expandable ");
JPanel p = new JPanel();
p.add(bugLabel);
final JScrollPane jScrollPane = new JScrollPane(tree, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
final JSplitPane sptPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jScrollPane, p);
sptPane.setDividerLocation(90);
sptPane.setOneTouchExpandable(true);
jScrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
@Override
public void adjustmentValueChanged(AdjustmentEvent e) {
System.out.println("=======================" + e.getValue());
}
});
JFrame f = new JFrame();
f.getContentPane().add(sptPane);
f.setSize(400, 200);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
populateTree(root);
tree.scrollPathToVisible(new TreePath(root.getLastLeaf().getPath()));
}

private void populateTree(DefaultMutableTreeNode root) {
DefaultMutableTreeNode currentNode = root;
int counter = 0;
while (counter++ < 9) {
DefaultMutableTreeNode nextNode = new DefaultMutableTreeNode("" + counter);
currentNode.add(nextNode);
currentNode = nextNode;
}

}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new OneTouchBug().playUI();
}
});
}
}
11 years ago