Panel#setScrollLeft(int) isn't working for me, why?

I am working on a project where we have a grid (FilterTable from the addons) that shows forecasts. On top of that is a Panel that displays the averages of those forecasts. Sometimes the grid is wider than the window and it scrolls left just fine. I want the averages panel to scroll in synch with the grid.

I’ve done the client/server programming so that I’m getting scroll left positions from the grid. I can see them in debug messages and they seem reasonable. I thought that would be the hard part.

But what has stumped me is when I call setScrollLeft(int) on the averages panel, it doesn’t scroll. I’ve setScrollable(true) and setImmediate(true) and tested that they are on. Below is the changeValue() method in the grid. You pass it a reference to the averages panel.


	@Override
	public void changeVariables( Object source, Map<String, Object> variables ) {
		super.changeVariables( source, variables );

		// Variables set by the widget are returned in the "variables" map.
		if ( variables.containsKey( "scroll" ) && averagesPanel != null 
				&& averagesPanel.isScrollable() && averagesPanel.isImmediate() ) {
			
			if ( LOG.isDebugEnabled() ) {
				LOG.debug( "in changeVariables(), setting scroll to " +
						variables.get( "scroll" ) );
			}
			
			averagesPanel.setScrollLeft( (Integer) variables.get( "scroll" ) );
			averagesPanel.requestRepaint();
		}
	}

Do I need the requestRepaint()? It doesn’t seem to matter if it’s called or not. Some of the above code is for debugging but besides that, does anyone know why my panel isn’t scrolling?

When I gave the averagesPanel a definite width in pixels, the scrolling started.