In a JSplitPane
, you have the setOneTouchExpandable
method which provides you with 2 buttons to quickly fully hide or full show the JSplitPane
.
My question is how can you programmatically “click” the hide button on the JSplitPane
?
I may have wrongly explained myself. I want the splitpane to show only one of the 2 components at start (this is what i mean by clicking).
This works:
import javax.swing.*; class SplitPaneDefault { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JSplitPane sp = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT, new JTree(), new JTree()); sp.setOneTouchExpandable(true); sp.setDividerLocation(0.0); JOptionPane.showMessageDialog(null, sp); } }); } }
but replacing 0.0
with 1.0
doesn’t hide the right component. This is my problem!
Advertisement
Answer
import javax.swing.*; class SplitPaneDefault { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JSplitPane sp = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT, new JTree(), new JTree()); sp.setOneTouchExpandable(true); sp.setDividerLocation(0.0); JOptionPane.showMessageDialog(null, sp); } }); } }
replace 0.0 with 1.0 and you get my problem
Read the fine manual and solve the problem.
This method immediately changes the size of the split pane based on its current size. If the split pane is not correctly realized and on screen, this method will have no effect …
import javax.swing.*; class SplitPaneDefault { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JSplitPane sp = new JSplitPane( JSplitPane.HORIZONTAL_SPLIT, new JTree(), new JTree()); sp.setOneTouchExpandable(true); JFrame f = new JFrame("Split Pane To Right"); f.add(sp); f.pack(); // sp now has a non-zero size! sp.setDividerLocation(1.0); f.setLocationByPlatform(true); f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); f.setVisible(true); } }); } }