Re: display geometry - do they alway have to be square?

Hi Frank,

Frank Gibbons wrote:
> Thanks for yesterday's tip, Bill, on getting two displays into a single
> container. I've been playing around with different layout managers. I
> notice that with FlowLayout and GridLayout, the displays are always square.
> How do I control the geometry of the displays? I'd like them to make better
> use of my screen real estate, by conforming to the JFrame geometry, but
> they only obey the vertical size of the container, not its horizontal size.

Perhaps what you want is described in:

If you display is in a JFrame, then you can also:

      jFrame.addComponentListener( new ComponentAdapter(){

        public void componentResized(ComponentEvent e)  {

          if(sticky){ // if sticky, VisAD display takes dimensions of
parent frame
            Dimension dim = display.getComponent().getSize();//

            int x = dim.width;
            int y = dim.height;
            double f = (x >= y) ? (double) x : (double) y;
            setAspect( new  double[]{1,(double) y/f, 1} );  // see


  public void setAspect(double[] aspect){
      ProjectionControl projCont = display.getProjectionControl();  //
display is you VisAD.DisplayImpl
    } catch (RemoteException re) {re.printStackTrace();
    } catch (VisADException ve) {ve.printStackTrace();}

Note the difference between
projCont.setAspectCartesian(aspect); -> keeps proportions
projCont.setAspect(aspect);     -> squeezes axis (fonts, cross-cursor,...)
according to aspect.

If you have display inside some other component, then use the
appropriate listener.

> Forgive me if this is an obvious window-manager issue. But I thought
> GridLayout should control both dimensions of the geometry.

Hope that helps.

> Thanks for any suggestions, as always.
> -Frank
> PhD, Computational Biologist,
> Harvard Medical School BCMP/SGM-322, 250 Longwood Ave, Boston MA 02115, USA.
> Tel: 617-432-3555       Fax:
> 617-432-3557