Re: Buttons sometimes don't get events
Hm... this seems to work better:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.plaf.basic.*;
public class Swing5 {
public static void main(String[] args) {
new Swing5();
}
public Swing5() {
JFrame f = new JFrame("Swing5");
f.setSize(300, 100);
Container c = f.getContentPane();
c.setLayout(new BorderLayout());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p1 = new JPanel();
p1.setPreferredSize(new Dimension(300, 100));
JPanel p2 = new JPanel();
p2.setMinimumSize(new Dimension(0, 50));
p2.setMaximumSize(new Dimension(0, 50));
p2.setPreferredSize(new Dimension(300, 50));
JSplitPane sp1 = new JSplitPane();
sp1.setDividerSize(15);
sp1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
sp1.setResizeWeight(1.0);
sp1.setOneTouchExpandable(true);
sp1.setTopComponent(p1);
sp1.setBottomComponent(p2);
sp1.setUI(new BasicSplitPaneUI() {
public BasicSplitPaneDivider createDefaultDivider() {
return new BasicSplitPaneDivider(this) {
public void setBasicSplitPaneUI(BasicSplitPaneUI newUI)
{
super.setBasicSplitPaneUI(newUI);
leftButton.setEnabled(false);
leftButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!leftButton.isEnabled())
return;
leftButton.setEnabled(false);
}
});
rightButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
leftButton.setEnabled(true);
}
});
splitPane.removePropertyChangeListener(this);
if (mouseHandler != null) {
splitPane.removeMouseListener(mouseHandler);
splitPane.removeMouseMotionListener(mouseHandler);
removeMouseListener(mouseHandler);
removeMouseMotionListener(mouseHandler);
}
setCursor(java.awt.Cursor.getPredefinedCursor(
java.awt.Cursor.DEFAULT_CURSOR));
}
};
}
});
c.add(sp1);
f.pack();
f.setVisible(true);
}
}