|
First I want to thank you all for the incredibly
specific and correct answers that I've gotten for all my inquiries on this list
(without exception)!
I'm trying to put a JSVGCanvas inside a scroll box.
I need to do this because I'm creating a graphic representation of a musical
abstraction - I have notes with graphical signs underneath, the SVG can contain
anywhere from 1 - 40 melodies each with it's own graphical rendition. I want to
be able to scroll down and look at them all.
The SVG file is fine (almost), the problem is
placing it inside the JScrollPane. What happens is that it always resizes itself
to fit the pane, so that the scroll bars never show up. If I make the JFrame a
full screen they show up full size, if I make it half screen size, the whole SVG
shows up reduced.
I think this may have to do with the SVG
attributes. There are so many factors that affect this - size,
transformation, viewbox, etc. I've tried all different kinds of
combinations. I admit I do no totally understand these all.
Here are the svg attibutes:
<svg width="1000" height="600" viewBox="-10 0 150 100"
preserveAspectRatio="xMinYMin meet" xml:space="collapse">
Here is the code "this" is a JFrame: //this is the whole svg
dimension, expanded (y only) according to the number of
melodies
Dimension d = new Dimension((scrnSize.width ) - 2, ((melcount + 2) * (scrnSize.height - 80) / 2)); svgCanvas.setEnabled(true); svgCanvas.setSize(d); svgCanvas.setVisible(true); SVGUtilities.writeSVG2file(SVGdoc, "c:\\temp\\out.svg"); svgCanvas.setSVGDocument(SVGdoc); //this is the smaller dimension, the lower half of the screen Dimension sd = new Dimension((scrnSize.width ) - 2, (scrnSize.height - 80) / 2); this.setSize(sd); this.setLocation(0, scrnSize.height/ 2); JScrollPane svgscrollpane = new JScrollPane(svgCanvas); //the scrolll pane size, the lower part of the
screen
svgscrollpane.setSize(sd);
svgscrollpane.setVisible(true);
svgscrollpane.setEnabled(true); svgscrollpane.setAutoscrolls(true); //add the scrollpane to the JFrame this.getContentPane().add(svgscrollpane); this.setVisible(true);
this.setEnabled(true); Thanks for any suggestions!
Jane
|
