Advertisement
Guest User

SplitPane

a guest
Apr 13th, 2015
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.64 KB | None | 0 0
  1. import java.awt.event.ComponentAdapter;
  2. import java.awt.event.ComponentEvent;
  3. import java.beans.PropertyChangeEvent;
  4. import java.beans.PropertyChangeListener;
  5. import java.util.Random;
  6.  
  7. import javax.swing.JFrame;
  8. import javax.swing.JSplitPane;
  9. import javax.swing.JTextArea;
  10.  
  11. public class SplitTwo extends JFrame {
  12.  
  13.     volatile JSplitPane sp;
  14.     JTextArea ta1, ta2;
  15.     private boolean listener;
  16.     Random rand;
  17.  
  18.     public SplitTwo() {
  19.         rand = new Random();
  20.         listener = true;
  21.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  22.         this.setVisible(true);
  23.         ta1 = new JTextArea();
  24.         ta2 = new JTextArea();
  25.         sp = new JSplitPane(JSplitPane.VERTICAL_SPLIT, ta1, ta2);
  26.         setupSP();
  27.         this.add(sp);
  28.         this.pack();
  29.     }
  30.  
  31.     public void setupSP() {
  32.         sp.addComponentListener(new ComponentAdapter() {
  33.             @Override
  34.             public synchronized void componentResized(ComponentEvent e) {
  35.                 synchronized (this) {
  36.                     listener = false;
  37.                     setDividerLocation();
  38.                     listener = true;
  39.                 }
  40.             }
  41.  
  42.         });
  43.         sp.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY,
  44.                 new PropertyChangeListener() {
  45.                     @Override
  46.                     public synchronized void propertyChange(
  47.                             PropertyChangeEvent e) {
  48.                         synchronized (this) {
  49.                             if (listener) {
  50.                                 System.out.println("Listener is: " + listener
  51.                                         + "  foo " + sp.getDividerLocation());
  52.                             }
  53.                         }
  54.                     }
  55.                 });
  56.     }
  57.  
  58.     public void setDividerLocation() {
  59.         System.out.println("\t" + listener);
  60.         sp.setDividerLocation(rand.nextInt((int) sp.getSize().getHeight()));
  61.         System.out.println("\t" + listener);
  62.     }
  63.  
  64.     public static void main(String[] args) {
  65.         new SplitTwo();
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement