Re: JSplitPane, some problem
In article <hoipd2$on9$1@nemesis.news.neostrada.pl>,
"Robbo" <nie.mam@yle.com> wrote:
Hello,
I would like to have horizontal JSplitPane with two panels,
where one of them (bottom) should have always the same
height when we use only one touch expandables
(we assume, user doesn't use dragging of divider).
[...]
Now, try to compile and run that application. Next:
1. press right one touch arrow -- bottom panel is now hidden.
2. maximalize application window, so it covers whole screen.
3. press left one touch arrow -- bottom panel is now shown, but
unfortunatelly it has bigger height than I wanted!!!
What to do, to make bottom panel having always the same height?
Handling componentResized events seemed to get the desired effect:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Swing6 {
private static class MyPanel extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawLine(0, 0, getWidth(), getHeight());
g.drawLine(getWidth(), 0, 0, getHeight());
}
}
private static void create() {
JFrame f = new JFrame("JSplitPane");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final MyPanel p1 = new MyPanel();
p1.setPreferredSize(new Dimension(300, 150));
final MyPanel p2 = new MyPanel();
p2.setMinimumSize(new Dimension(0, 0));
p2.setPreferredSize(new Dimension(300, 100));
p2.setMaximumSize(new Dimension(300, 100));
final JSplitPane jsp = new JSplitPane();
jsp.setTopComponent(p1);
jsp.setBottomComponent(p2);
jsp.setOrientation(JSplitPane.VERTICAL_SPLIT);
jsp.setResizeWeight(1.0);
jsp.setOneTouchExpandable(true);
jsp.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
if (p2.getHeight() > 0)
jsp.resetToPreferredSizes();
}
});
f.add(jsp);
f.pack();
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
create();
}
});
}
}
As an aside, it's a good habit to build the GUI on the EDT:
<http://java.sun.com/docs/books/tutorial/uiswing/concurrency/initial.html
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>