This week's book giveaway is in the
General Computing
forum.
We're giving away four copies of
Arduino in Action
and have Martin Evans, Joshua Noble, and Jordan Hochenbaum on-line!
See
this thread
for details.
A friendly place for programming greenhorns!
Big Moose Saloon
Search
|
Java FAQ
|
Recent Topics
Register / Login
Win a copy of
Arduino in Action
this week in the
General Computing
forum!
A special promo:
Enter your blog post or vote on a blogger to be featured in an upcoming Journal
JavaRanch
»
Java Forums
»
Java
»
Swing / AWT / SWT
Author
synchronize two ScrollPane
Laszlo
Greenhorn
Joined: Dec 08, 2004
Posts: 4
posted
Dec 08, 2004 09:56:00
0
Hi Everyone,
How can I synchronize two scroll pane?
Have anyone some code sample?
Thank you,
Laszlo
☻♪♂
Craig Wood
Ranch Hand
Joined: Jan 14, 2004
Posts: 1535
posted
Dec 08, 2004 13:15:00
0
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ScrollPaneTest { public ScrollPaneTest() { JScrollPane scrollPane1 = new JScrollPane(getPanel()); JScrollPane scrollPane2 = new JScrollPane(getPanel()); Synchronizer synchronizer = new Synchronizer(scrollPane1, scrollPane2); scrollPane1.getVerticalScrollBar().addAdjustmentListener(synchronizer); scrollPane1.getHorizontalScrollBar().addAdjustmentListener(synchronizer); scrollPane2.getVerticalScrollBar().addAdjustmentListener(synchronizer); scrollPane2.getHorizontalScrollBar().addAdjustmentListener(synchronizer); JPanel panel = new JPanel(new GridLayout(1,0)); panel.add(scrollPane1); panel.add(scrollPane2); JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.getContentPane().add(panel); f.setSize(500,300); f.setLocation(200,200); f.setVisible(true); } private JPanel getPanel() { JPanel panel = new JPanel() { GradientPaint gradient; protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; if(gradient == null) init(); g2.setPaint(gradient); g2.fillRect(0, 0, getWidth(), getHeight()); } private void init() { gradient = new GradientPaint(0, 0, Color.red, getWidth(), getHeight(), Color.blue); } }; panel.setPreferredSize(new Dimension(400,400)); return panel; } public static void main(String[] args) { new ScrollPaneTest(); } } class Synchronizer implements AdjustmentListener { JScrollBar v1, h1, v2, h2; public Synchronizer(JScrollPane sp1, JScrollPane sp2) { v1 = sp1.getVerticalScrollBar(); h1 = sp1.getHorizontalScrollBar(); v2 = sp2.getVerticalScrollBar(); h2 = sp2.getHorizontalScrollBar(); } public void adjustmentValueChanged(AdjustmentEvent e) { JScrollBar scrollBar = (JScrollBar)e.getSource(); int value = scrollBar.getValue(); JScrollBar target = null; if(scrollBar == v1) target = v2; if(scrollBar == h1) target = h2; if(scrollBar == v2) target = v1; if(scrollBar == h2) target = h1; target.setValue(value); } }
Michael Dunn
Ranch Hand
Joined: Jun 09, 2003
Posts: 4632
posted
Dec 08, 2004 14:20:00
0
import java.awt.*; import java.awt.event.*; import javax.swing.*; class Testing extends JFrame { public Testing() { JScrollPane sp1 = new JScrollPane(new ScrollPanel()); JScrollBar sBar1 = sp1.getVerticalScrollBar(); JScrollPane sp2 = new JScrollPane(new ScrollPanel()); JScrollBar sBar2 = sp2.getVerticalScrollBar(); sBar2.setModel(sBar1.getModel()); //<--------------synchronize getContentPane().setLayout(new GridLayout(1,2)); getContentPane().add(sp1); getContentPane().add(sp2); setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(400,300); setLocation(400,300); } public static void main(String[] args) {new Testing().setVisible(true);} } class ScrollPanel extends JPanel { public ScrollPanel() { setLayout(new GridLayout(50,1)); for(int x = 0; x < 50; x++) add(new JLabel(""+(x+1))); } }
Laszlo
Greenhorn
Joined: Dec 08, 2004
Posts: 4
posted
Dec 10, 2004 01:57:00
0
it is perfect, thank you
I agree. Here's the link:
http://zeroturnaround.com/jrebel
- it saves me about five hours per week
subject: synchronize two ScrollPane
Similar Threads
Listener Thread Question
synchronisation
Database Locks
Dan's thread
object lock
All times are in JavaRanch time: GMT-6 in summer, GMT-7 in winter