It works fine with containers. 
It doesn't work this way for non-deterministic hierarchy.

So if you place the table layout in the CENTER of a border layout and place 
a simple label in the north of the border layout it will work too.

Where it will fail is if you will place a scrollable in the hierarchy or a 
container that isn't deterministic and grabs the view. It will fail if you 
don't give it width/height constraints.

On Wednesday, August 26, 2020 at 12:00:10 PM UTC+3 P5music wrote:

> Yes it is a separate class that extends Form.
> Now I see that your code works, but only when a TL is added to the form. 
> Indeed I cannot have a text area at the top, and then the TL. This is 
> somewhat acceptable for my app, or I can use the 70/30 layout with BL. I 
> have to present the instructions elsewhere.
>
> So I think TL does not work with Containers, it just works with Forms. I 
> do not know if it is by design.
> I tried also to add a Form to the Form, so the TL is in a Form that is in 
> a Form, but the result is the same of BC not spread vertically.
> I do not know if this trick could work with different constraints that you 
> can devise and provide a workaround.
> Thanks
>
>
> Il giorno mercoledì 26 agosto 2020 alle 08:54:39 UTC+2 Shai Almog ha 
> scritto:
>
>> Is this a subclass of form?
>> Actually my code was wrong. You should do:
>>
>>
>> add(tl.cc().hp(100).wp(50), textAreaLeft);
>>  add(tl.cc().hp(100).wp(50), textAreaRight);
>>
>>
>> On Tuesday, August 25, 2020 at 11:51:55 AM UTC+3 P5music wrote:
>>
>>> As I said, my layout needs a TableLayout with 1 row and 2 columns (not 2 
>>> rows and 1 column), so I changed your code:
>>>  BrowserComponent textAreaLeft=new BrowserComponent();
>>>        textAreaLeft.setPage("<HTML><BODY><DIV 
>>> style='overflow:scroll;white-space:nowrap;'>MULTILINE TEXT</BR>MULTILINE 
>>> TEXT</BR>MULTILINE TEXT</BR>MULTILINE TEXT</BR>MULTILINE TEXT</BR>MULTILINE 
>>> TEXT</BR>MULTILINE TEXT</BR>MULTILINE TEXT</BR></DIV><BODY></HTML>","");
>>>
>>>         BrowserComponent textAreaRight=new BrowserComponent();
>>>         textAreaRight.setPage("<HTML><BODY><DIV 
>>> style='overflow:scroll;white-space:nowrap;'>MULTILINE TEXT</BR>MULTILINE 
>>> TEXT</BR>MULTILINE TEXT</BR>MULTILINE TEXT</BR>MULTILINE TEXT</BR>MULTILINE 
>>> TEXT</BR>MULTILINE TEXT</BR>MULTILINE TEXT</BR></DIV><BODY></HTML>","");
>>>
>>>
>>>         TableLayout tl = new TableLayout(1, 2);
>>>         setLayout(tl);
>>>         setScrollable(false);
>>>         add(tl.cc().hp(50), textAreaLeft);
>>>         add(tl.cc().hp(50), textAreaRight);
>>>
>>> and you can see the result in the attached image, where two vertical BCs 
>>> are one beside the other horizontally, but they are both in the left area 
>>> of the screen, while I want that they occupy half screen each horizontally. 
>>> Note that they are vertically spread as I need.
>>> Clearly hp(50) has to be changed to wp(50), so I try it:
>>>
>>>         TableLayout tl = new TableLayout(1, 2);
>>>         setLayout(tl);
>>>         setScrollable(false);
>>>         add(tl.cc().wp(50), textAreaLeft);
>>>         add(tl.cc().wp(50), textAreaRight);
>>>
>>> and the result is what you can see in the other image, where two BCs 
>>> share 50/50 the screen horizontally but they are not spread vertically.
>>> So the problem is that the BC do not spread vertically when in a TL with 
>>> 1 row and 2 columns and wp=50
>>> Thanks
>>> Il giorno martedì 25 agosto 2020 alle 05:46:53 UTC+2 Shai Almog ha 
>>> scritto:
>>>
>>>> TableLayout tl = TableLayout(2, 1);
>>>> myForm.setLayout(tl);
>>>> myForm.setScrollable(false);
>>>> myForm.add(tl.cc().hp(50), bc1);
>>>> myForm.add(tl.cc().hp(50), bc2);
>>>> On Monday, August 24, 2020 at 12:54:50 PM UTC+3 P5music wrote:
>>>>
>>>>> I will have a look at the Component Inspector.
>>>>> But you seem very confident about the TL-BC behaviour, so I think it's 
>>>>> me that cannot guess the right constraint to the TL.
>>>>> Please give me two lines of code where you create a working 50/50 TL 
>>>>> layour with two BCs that expand vertically.
>>>>> 1 row and 2 columns, each BC has to take all the available vertical 
>>>>> space.
>>>>> Thanks in advance
>>>>>
>>>>>
>>>>> Il giorno lunedì 24 agosto 2020 alle 03:53:38 UTC+2 Shai Almog ha 
>>>>> scritto:
>>>>>
>>>>>> You need to use Component inspector to look at hierarchies, it shows 
>>>>>> the layout and would have made this easier to spot.
>>>>>> You shouldn't use non-center border layout for browser component. 
>>>>>>
>>>>>> If you place TableLayout on the form itself. Disable scrolling and 
>>>>>> add both rows with height set to 50 (and no other constraints) you'd get 
>>>>>> a 
>>>>>> perfectly split 50/50 layout.
>>>>>>
>>>>>> On Sunday, August 23, 2020 at 1:27:04 PM UTC+3 P5music wrote:
>>>>>>
>>>>>>> I realized that the default form layout is FlowLayout and not 
>>>>>>> BorderLayout (I do not where I read that) so it is not a bug, although 
>>>>>>> I 
>>>>>>> would expect an error or warning when using BorderLayout constraints in 
>>>>>>> the 
>>>>>>> add() call. 
>>>>>>> Said that it is not possible to use a TableLayout to split the 
>>>>>>> screen 50/50 with two BrowserComponents, whatever I try. I do not know 
>>>>>>> if 
>>>>>>> that's a bug.
>>>>>>> I only succeded in creating a similar layout just adding the BC 
>>>>>>> CENTER and WEST, but they are not 50/50, one is smaller. 
>>>>>>> Take into account that in the two BCs there is multiline text with 
>>>>>>> overflow:scroll and white-spaces:nowrap so you just imagine that 
>>>>>>> scrollbars 
>>>>>>> allow to see what's not visible horizontally for example, so,the BCs 
>>>>>>> have 
>>>>>>> taken all available space and share it with some ratio like 70/30.
>>>>>>> Is there any constraint to correct this?
>>>>>>>
>>>>>>> Il giorno domenica 23 agosto 2020 alle 04:54:01 UTC+2 Shai Almog ha 
>>>>>>> scritto:
>>>>>>>
>>>>>>>> You can't rely on that. The layout code is very cross platform 
>>>>>>>> since it's 100% Java. The things that behave differently are native 
>>>>>>>> e.g. 
>>>>>>>> the browser. 
>>>>>>>> In this case I'm pretty sure the layout will misbehave. You need to 
>>>>>>>> create 100% deterministic layout with no scrolling for the browser 
>>>>>>>> component. That means the layout manager will know the size and won't 
>>>>>>>> need 
>>>>>>>> the value of getPreferredSize().
>>>>>>>>
>>>>>>>> On Saturday, August 22, 2020 at 11:10:27 AM UTC+3 P5music wrote:
>>>>>>>>
>>>>>>>>> If the BrowserComponent itself (rendering, updating, Javascript) 
>>>>>>>>> would not have issues on the real iOS app (native build) like they 
>>>>>>>>> exist on 
>>>>>>>>> the simulator, I wonder whether also these layout  issues are 
>>>>>>>>> automatically 
>>>>>>>>> happening on the real iOS app.
>>>>>>>>> Unfortunately iOS builds are "costly" in terms of credits, I 
>>>>>>>>> cannot use them to test the layout and the BrowserComponent. 
>>>>>>>>> Furthermore 
>>>>>>>>> Chrome mirroring for debugging does not work, I see a blank screen.
>>>>>>>>>
>>>>>>>>> Il giorno sabato 22 agosto 2020 alle 07:16:42 UTC+2 Shai Almog ha 
>>>>>>>>> scritto:
>>>>>>>>>
>>>>>>>>>> You don't need the border layout. This is only a tip for the 
>>>>>>>>>> simple usage in a form.
>>>>>>>>>> Using the same strings make it hard for me to read the code and 
>>>>>>>>>> screenshot without trying it. 
>>>>>>>>>>
>>>>>>>>>> If you think there's a bug you can file an issue. Unfortunately 
>>>>>>>>>> you probably understand we have a deep issue pipeline and it takes 
>>>>>>>>>> us a 
>>>>>>>>>> long while to evaluate everything.
>>>>>>>>>>
>>>>>>>>>> On Friday, August 21, 2020 at 11:23:10 AM UTC+3 P5music wrote:
>>>>>>>>>>
>>>>>>>>>>> I use BL surrounding a BC because I think I have understood that 
>>>>>>>>>>> it "encourages" the BC to spread. And other BLs are surrounding. 
>>>>>>>>>>> It is a trial/error method but now I am stuck. 
>>>>>>>>>>> I wanted to show you a possible issue: indeed the layout is 
>>>>>>>>>>> inverted, what is CENTER is at the top and what is NORTH is at the 
>>>>>>>>>>> bottom. 
>>>>>>>>>>> This could be of interest in general if a bug is discovered.
>>>>>>>>>>> Back to my layout, text is not important, the BC do not spread, 
>>>>>>>>>>> this is the problem. If you will test the code, you can also remove 
>>>>>>>>>>> something redundant, or tweak it, so I have the solution, otherwise 
>>>>>>>>>>> it is a 
>>>>>>>>>>> bug, this is of interest for you anyway, I think, solving this 
>>>>>>>>>>> would shed 
>>>>>>>>>>> light on the subject..
>>>>>>>>>>> Thanks in advance
>>>>>>>>>>>
>>>>>>>>>>> Il giorno venerdì 21 agosto 2020 alle 06:44:38 UTC+2 Shai Almog 
>>>>>>>>>>> ha scritto:
>>>>>>>>>>>
>>>>>>>>>>>> You can nest a border layout in a table cell although I'm not 
>>>>>>>>>>>> sure what the benefit would be but this is OK.
>>>>>>>>>>>>
>>>>>>>>>>>> You lost me a bit with all the level of nesting all over the 
>>>>>>>>>>>> place, reading the code I have no idea how it should look by now 
>>>>>>>>>>>> and since 
>>>>>>>>>>>> everything is conveniently named "Multiline text" my brain is 
>>>>>>>>>>>> stack 
>>>>>>>>>>>> overflowing..
>>>>>>>>>>>>
>>>>>>>>>>>> I suggest opening this in Component Inspector and looking at 
>>>>>>>>>>>> the sizes of each component in the hierarchy. Where they were 
>>>>>>>>>>>> placed and 
>>>>>>>>>>>> why.
>>>>>>>>>>>> On Thursday, August 20, 2020 at 12:07:48 PM UTC+3 P5music wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> You have to see the attached image, that corresponds to the 
>>>>>>>>>>>>> code below: you can see an inverted layout, indeed the 
>>>>>>>>>>>>> instructions text is 
>>>>>>>>>>>>> at the bottom, while it is added NORTH to the form. And what you 
>>>>>>>>>>>>> see at the 
>>>>>>>>>>>>> top is added CENTER. I was trying some changes and stumbled into 
>>>>>>>>>>>>> this. Am I 
>>>>>>>>>>>>> wrong? Is this an issue?
>>>>>>>>>>>>>
>>>>>>>>>>>>> As to my real code, I am not using CENTER constraint in the 
>>>>>>>>>>>>> TL. Just each cell is a BL container with the BC inside, I used 
>>>>>>>>>>>>> this scheme 
>>>>>>>>>>>>> for another layout and it worked.
>>>>>>>>>>>>> If you mean that the TL should not be CENTER in a BL, also if 
>>>>>>>>>>>>> I put it in a BoxLayout.y the layout does not work.
>>>>>>>>>>>>> 100% height is not harmful I think because there is just one 
>>>>>>>>>>>>> row, however I removed it.
>>>>>>>>>>>>> the form was set not scrollable.
>>>>>>>>>>>>> But still the BC do not take the space.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Here's the code that I talked about. If I am not wrong this 
>>>>>>>>>>>>> could be an issue.
>>>>>>>>>>>>> Anyway can you suggest some tweaks using it as a starting 
>>>>>>>>>>>>> point, said that the intended layout is that the two BCs are at 
>>>>>>>>>>>>> the bottom 
>>>>>>>>>>>>> and they are expanded to show full text?
>>>>>>>>>>>>> Thanks in advance
>>>>>>>>>>>>>
>>>>>>>>>>>>> private void createForm()
>>>>>>>>>>>>>     {
>>>>>>>>>>>>>         Command backCommand=new Command("Back") {
>>>>>>>>>>>>>             @Override
>>>>>>>>>>>>>             public void actionPerformed(ActionEvent evt) {
>>>>>>>>>>>>>                 parentForm.showBack();
>>>>>>>>>>>>>             }
>>>>>>>>>>>>>         };
>>>>>>>>>>>>>
>>>>>>>>>>>>>         this.setScrollable(false);
>>>>>>>>>>>>>         getToolbar().setBackCommand(backCommand);
>>>>>>>>>>>>>
>>>>>>>>>>>>>         setTitle(formTitle);
>>>>>>>>>>>>>         Container mainContainer=new Container();
>>>>>>>>>>>>>         
>>>>>>>>>>>>>         mainContainer.setLayout(BoxLayout.y());
>>>>>>>>>>>>>        
>>>>>>>>>>>>>         TableLayout tl=new TableLayout(1,2);
>>>>>>>>>>>>> Container tableContainer=new Container();
>>>>>>>>>>>>> tableContainer.setLayout(tl);
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>         Container centerContainerLeft=new Container(new 
>>>>>>>>>>>>> BorderLayout());
>>>>>>>>>>>>>         Container centerContainerRight=new Container(new 
>>>>>>>>>>>>> BorderLayout());
>>>>>>>>>>>>>
>>>>>>>>>>>>>         SpanLabel textArea=new SpanLabel();
>>>>>>>>>>>>>        
>>>>>>>>>>>>>         textArea.setText("Multiline text\nMultiline 
>>>>>>>>>>>>> text\nMultiline text\nMultiline text\n");
>>>>>>>>>>>>> add(BorderLayout.NORTH,textArea);
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>         BrowserComponent textAreaLeft=new BrowserComponent();
>>>>>>>>>>>>>        
>>>>>>>>>>>>>         textAreaLeft.setPage("<HTML><BODY><DIV 
>>>>>>>>>>>>> style='overflow-x:scroll;'>"+"Multiline Text</BR>Multiline 
>>>>>>>>>>>>> Text</BR>Multiline Text</BR>Multiline 
>>>>>>>>>>>>> Text</BR></DIV><BODY></HTML>","");
>>>>>>>>>>>>> centerContainerLeft.add(BorderLayout.CENTER,textAreaLeft);
>>>>>>>>>>>>>
>>>>>>>>>>>>>         BrowserComponent textAreaRight=new BrowserComponent();
>>>>>>>>>>>>>        
>>>>>>>>>>>>>         textAreaRight.setPage("<HTML><BODY><DIV 
>>>>>>>>>>>>> style='overflow-x:scroll;'>"+"Multiline Text</BR>Multiline 
>>>>>>>>>>>>> Text</BR>Multiline Text</BR>Multiline 
>>>>>>>>>>>>> Text</BR></DIV><BODY></HTML>","");
>>>>>>>>>>>>>        
>>>>>>>>>>>>>         
>>>>>>>>>>>>> centerContainerRight.add(BorderLayout.CENTER,textAreaRight);
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> tableContainer.add(tl.createConstraint().widthPercentage(50),centerContainerLeft).
>>>>>>>>>>>>>         
>>>>>>>>>>>>> add(tl.createConstraint().widthPercentage(50),centerContainerRight);
>>>>>>>>>>>>> mainContainer.add(tableContainer);
>>>>>>>>>>>>> add(BorderLayout.CENTER,mainContainer); //same if I add tl 
>>>>>>>>>>>>> directly
>>>>>>>>>>>>>     }
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Il giorno giovedì 20 agosto 2020 alle 03:44:47 UTC+2 Shai 
>>>>>>>>>>>>> Almog ha scritto:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Don't use center constraint in the table layout. It will 
>>>>>>>>>>>>>> break everything. Leave it as the default. 
>>>>>>>>>>>>>> Height should never be 100 as all the heights together should 
>>>>>>>>>>>>>> come up to 100 (it's in percent).
>>>>>>>>>>>>>> Don't use span, it makes column calculation hard and spanning 
>>>>>>>>>>>>>> 2000 columns is probably not what you're trying to do.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Also make sure you invoked form.setScrollable(false).
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to codenameone-discussions+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/codenameone-discussions/6529fbde-f9dc-4584-b5f5-442f1f502cfdn%40googlegroups.com.

Reply via email to