pivot-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marek Repak <marek.repak...@googlemail.com>
Subject Re: How do I get the Label element to reposition when using a StackPane?
Date Tue, 23 Jul 2013 17:57:38 GMT
remove me from here


On 23 July 2013 18:34, Roger L. Whitcomb <Roger.Whitcomb@actian.com> wrote:

> Thanks for the link to the SVG – I was having trouble without it ;)****
>
> ** **
>
> I did some playing around, and was able to get the effect you wanted by
> doing this:****
>
> <Window title="Labels" maximized="true" xmlns:bxml="
> http://pivot.apache.org/bxml"****
>
>     xmlns="org.apache.pivot.wtk">****
>
>     <StackPane bxml:id="mainContainer"
> styles="{backgroundColor:'#cccccc'}">****
>
>         <ImageView bxml:id="background" image="@Usa_counties_large.svg"***
> *
>
>             styles="{horizontalAlignment:'left', verticalAlignment:'top',
> fill:true, preserveAspectRatio:true}" />****
>
>         <BoxPane styles="{padding:{left:100,top:100}}">****
>
>             <Label bxml:id="countyLabel" text="King County"****
>
>                 styles="{font:'Helvetica bold 24', color:'red',
> wrapText:true}" />****
>
>         </BoxPane>****
>
>     </StackPane>****
>
> </Window>****
>
> ** **
>
> The difficulty is that StackPane lays out its children only according to
> its padding values (see StackPaneSkin.java method “layout()”).  This
> effectively overrides the x and y values in the BXML file.  So, adding in
> the BoxPane around the Label allows its padding to be used to layout the
> Label where you want it.****
>
> ** **
>
> Another way to do it, in order to override the label’s location that is
> being set during the layout process, is to do it in the Java code like this
> (which effectively allows the layout process to happen, which will set the
> label’s location according to the StackPane’s padding, but then will
> reposition it to where you want it).****
>
>     @Override///****
>
>     public void startup(Display display, Map<String, String> properties)
> throws Exception****
>
>     {****
>
>         final BXMLSerializer bxmlSerializer = new BXMLSerializer();****
>
>         window = (Window)
> bxmlSerializer.readObject(StackPaneLabelRepositionExample.class,
> "StackPaneLabelRepositionExample.bxml");****
>
>         window.open(display);****
>
>         ApplicationContext.queueCallback(new Runnable() {****
>
>             @Override****
>
>             public void run() {****
>
>                 Label label =
> (Label)bxmlSerializer.getNamespace().get("countyLabel");****
>
>                 label.setLocation(100, 100);****
>
>             }****
>
>         });****
>
>     }****
>
> ** **
>
> The point being that the container plays the most important role in
> positioning its children during the “layout()” method/process, but you can
> also override this afterwards.  But note that with the code this way, if I
> resize the main window, the label will jump back to the 0,0 position, so
> the “setLocation” code I’ve highlighted would also have to be called in
> response to a window resize event.****
>
> ** **
>
> HTH,****
>
> ~Roger****
>
> ** **
>
> *From:* Erik Innocent [mailto:einnocent@gmail.com]
> *Sent:* Tuesday, July 23, 2013 7:35 AM
> *To:* user
> *Subject:* Re: How do I get the Label element to reposition when using a
> StackPane?****
>
> ** **
>
> Whoops, I forgot to mention that the sample SVG in the example is
> available at:****
>
> ** **
>
> http://upload.wikimedia.org/wikipedia/commons/5/59/Usa_counties_large.svg*
> ***
>
> ** **
>
> I've also mentioned the image source in a comment in the bxml.****
>
> ** **
>
> Cheers,****
>
> --E****
>
> ** **
>
> ** **
>
> On Mon, Jul 22, 2013 at 8:10 PM, Erik Innocent <einnocent@gmail.com>
> wrote:****
>
> How do I get the Label element to reposition when using a StackPane? Right
> now I'm specifying the 'x' and 'y' attributes in my Label element in my
> bxml, but the Label remains stuck in the top, left corner of the screen. I
> have a simple code example demonstrating my issue here:****
>
> ** **
>
> https://gist.github.com/einnocent/a9028c0a058ea59681a3****
>
> ** **
>
> Am I doing it right, but there is a bug? Or am I doing it wrong, and
> should be doing it another way? Or does StackPane not function that way,
> and I should be using something else (like Panel)?****
>
> ** **
>
> Note that I know I can use style elements like
> "horizontalAlignment:'center', verticalAlignment:'center'", but I need
> precise control over placement of the Label. I suppose I could use the
> padding style elements, but that seems hackish.****
>
> ** **
>
> Thank you for your time and feedback!****
>
> --E****
>
> ** **
>
> ** **
>
> ** **
>

Mime
View raw message