<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
The setDividerLocation(float) still exhibits the bug.<br>
I ran across it a long time ago. The following class will fix the bug:<br>
<br>
import java.awt.Component;<br>
<br>
import javax.swing.JSplitPane;<br>
<br>
// This is a hack to fix the setDividerLocation problem<br>
// See Bug Parade id 4101306<br>
// See Bug Parade id 4485465 for a description of the WIDE divider
problem.<br>
// Bug Reports on JSplitpane setDividerLocation<br>
// 4101306, 4125713, 4148530<br>
<br>
//From the javadoc for setDividerLocation(double):<br>
//-------------------------------------------<br>
//* &lt;p&gt;This method is implemented in terms of
setDividerLocation(int).<br>
//* This method immediately changes the size of the receiver based on<br>
//* its current size. If the receiver is not correctly realized and on<br>
//* screen, this method will have no effect (new divider location will<br>
//* become (current size * proportionalLocation) which is 0).<br>
//-------------------------------------------<br>
//So, as you can see the JSplitPane MUST be visible invoking this method<br>
//otherwise it will not have the desired effect.<br>
//xxxxx@xxxxx 1999-10-04<br>
public class FixedSplitPane extends JSplitPane<br>
{<br>
&nbsp;&nbsp;&nbsp; private boolean firstValidate = true;<br>
&nbsp;&nbsp;&nbsp; private boolean hasProportionalLocation = false;<br>
&nbsp;&nbsp;&nbsp; private double proportionalLocation;<br>
<br>
&nbsp;&nbsp;&nbsp; /**<br>
&nbsp;&nbsp;&nbsp;&nbsp; * Constructor for FixedSplitPane<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp; */<br>
&nbsp;&nbsp;&nbsp; public FixedSplitPane()<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super();<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; /**<br>
&nbsp;&nbsp;&nbsp;&nbsp; * Constructor for FixedSplitPane<br>
&nbsp;&nbsp;&nbsp;&nbsp; * <br>
&nbsp;&nbsp;&nbsp;&nbsp; * @param arg0<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp; */<br>
&nbsp;&nbsp;&nbsp; public FixedSplitPane(int arg0)<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super(arg0);<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; /**<br>
&nbsp;&nbsp;&nbsp;&nbsp; * Constructor for FixedSplitPane<br>
&nbsp;&nbsp;&nbsp;&nbsp; * <br>
&nbsp;&nbsp;&nbsp;&nbsp; * @param arg0<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int<br>
&nbsp;&nbsp;&nbsp;&nbsp; * @param arg1<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp; */<br>
&nbsp;&nbsp;&nbsp; public FixedSplitPane(int arg0, boolean arg1)<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super(arg0, arg1);<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; /**<br>
&nbsp;&nbsp;&nbsp;&nbsp; * Constructor for FixedSplitPane<br>
&nbsp;&nbsp;&nbsp;&nbsp; * <br>
&nbsp;&nbsp;&nbsp;&nbsp; * @param arg0<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int<br>
&nbsp;&nbsp;&nbsp;&nbsp; * @param arg1<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Component<br>
&nbsp;&nbsp;&nbsp;&nbsp; * @param arg2<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Component<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp; */<br>
&nbsp;&nbsp;&nbsp; public FixedSplitPane(int arg0, Component arg1, Component arg2)<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super(arg0, arg1, arg2);<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; /**<br>
&nbsp;&nbsp;&nbsp;&nbsp; * Constructor for FixedSplitPane<br>
&nbsp;&nbsp;&nbsp;&nbsp; * <br>
&nbsp;&nbsp;&nbsp;&nbsp; * @param arg0<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int<br>
&nbsp;&nbsp;&nbsp;&nbsp; * @param arg1<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean<br>
&nbsp;&nbsp;&nbsp;&nbsp; * @param arg2<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Component<br>
&nbsp;&nbsp;&nbsp;&nbsp; * @param arg3<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Component<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp; */<br>
&nbsp;&nbsp;&nbsp; public FixedSplitPane(int arg0, boolean arg1, Component arg2,
Component arg3)<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super(arg0, arg1, arg2, arg3);<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; /**<br>
&nbsp;&nbsp;&nbsp;&nbsp; * Validates this container and all of its subcomponents. The first
time<br>
&nbsp;&nbsp;&nbsp;&nbsp; * this method is called, the initial divider position is set.<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp; */<br>
&nbsp;&nbsp;&nbsp; public void validate()<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (firstValidate)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; firstValidate = false;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (hasProportionalLocation)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setDividerLocation(proportionalLocation);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.validate();<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; /**<br>
&nbsp;&nbsp;&nbsp;&nbsp; * Sets the divider location as a percentage of the JSplitPane's
size.<br>
&nbsp;&nbsp;&nbsp;&nbsp; * <br>
&nbsp;&nbsp;&nbsp;&nbsp; * @param proportionalLocation<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double<br>
&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp; */<br>
&nbsp;&nbsp;&nbsp; public void setDividerLocation(double newProportionalLocation)<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!firstValidate)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hasProportionalLocation = true;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; proportionalLocation = newProportionalLocation;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.setDividerLocation(newProportionalLocation);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; }<br>
}<br>
<br>
DM Smith wrote:<br>
<blockquote cite="mid412F3D0C.60807@yahoo.com" type="cite">
  <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
  <title></title>
I think you stumbled across a more basis problem and your fix is only
partial.<br>
  <br>
The user can select font's that the program can use. Under WinXP, the
look and feel uses the font's that the user selects in WinXP. If they
select a big font, the problem will show up again.<br>
  <br>
For the sake of those that have vision problems (other reasons too) and
want a larger font, we should allow them to set the font. Generally
this means that setting fixed sizes is a bad idea. A quick glance show
that this is through out the code.<br>
  <br>
For the divider, I played with using a float and also w/ commenting out
the line. Both seem to work as expected. I don't know if they fixed it
yet but there was a bug in setting the divider by float.<br>
  <br>
Mark what happens if you comment out the line rather than setting it to
210. Also same question w the setPreferredSize(300,400) on the scroller.<br>
  <br>
Mark Goodwin wrote:
  <blockquote cite="midb0ca56fe040827064079ff43d6@mail.gmail.com"
 type="cite">
    <pre wrap="">The JSplitPane in SitePane didn't leave anough space on the left for
the buttons (which made one of them invisible on OS X).  Increased the
width to 210 from 200.

The build.xml still referenced tar.jar in the signjar stuff causing
bibledesktop builds to fail.  Removed that line.

HTH

MarkG
  </pre>
    <pre wrap=""><hr size="4" width="90%">
_______________________________________________
jsword-devel mailing list
<a class="moz-txt-link-abbreviated"
 href="mailto:jsword-devel@crosswire.org">jsword-devel@crosswire.org</a>
<a class="moz-txt-link-freetext"
 href="http://www.crosswire.org/mailman/listinfo/jsword-devel">http://www.crosswire.org/mailman/listinfo/jsword-devel</a>
  </pre>
  </blockquote>
  <pre wrap="">
<hr size="4" width="90%">
_______________________________________________
jsword-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:jsword-devel@crosswire.org">jsword-devel@crosswire.org</a>
<a class="moz-txt-link-freetext" href="http://www.crosswire.org/mailman/listinfo/jsword-devel">http://www.crosswire.org/mailman/listinfo/jsword-devel</a>
  </pre>
</blockquote>
</body>
</html>