Scrollable in my component - java-me

I can not set scrollale for center component. But NORTH and SOUTH have to be fixed.
this.setLayout(new BorderLayout());
this.setScrollable(false);
this.addComponent(BorderLayout.NORTH, top);
scrollWrap.setScrollable(true);
this.addComponent(BorderLayout.CENTER, scrollWrap);
this.addComponent(BorderLayout.SOUTH, bottom);
What is the problem?

I'm assuming this code is in a subclass of Form? What specifically isn't working? Do you intend to enable scrolling on both X & Y? Are you adding components into the container? Scroll will only work if you add components into the scrollWrap container

Related

How to set Label at bottom of the screen in J2ME with LWUIT?

I am displaying the main form in Box Layout.In that box layout,taken Label in another container which has been set as border layout. Now this container is added to main form.
following is my code :-
lblversion=new Label((String)keyvalues.get("lbl_versionnumber"));
lblversion.setAlignment(lblversion.RIGHT);
lblversion.setVerticalAlignment(lblversion.BOTTOM);
Container row0= new Container(new BorderLayout());
row0.addComponent(BorderLayout.SOUTH,lblversion);
this.addComponent(row0);
Now my problem is that i want to show label at bottom of the screen,but it shows after all the components have been added in form (not at bottom).
I have also attached image.. you can see it and get idea of it.
So is there any option to set label at bottom of the screen in J2ME with LWUIT ?
If any one has idea,please help me.
Set Main Form as Border Layout and keep all components in 1 container which should be BoxLayout and then put these container in main Form with Given Attribute of BorderLayout
And Remove Container from label and insert directly label to main form as such it has been given BorderLayout so add your Label in this Format and all Other components
this.addComponent(BorderLayout.SOUTH,lblversion);

how to set lwuit textarea scrolling false

I want to add large string content to a container dynamically.
There are 60 different contents(strings) to be displayed in this container.
To add the string to container, I am adding a TextArea(empty border with 100% transparency).
The problem is that TextArea offers scroll and I do not want it to scroll. Instead I want to grow(increase height) according to content. I am unable to achieve this.
Can you help me out with this?
Or can I use any other component for the purpose?
I am using LWUIT with J2ME.
You can derive text area and return false for isScrollableY() although it should generally work seamlessly even if you don't do that (since your parent layout is scrollable). Is it possible you changed the text area and don't revalidate the parent form on the EDT?
There are problems with text area layout when it is modified by a separate thread (race condition with the layout code).
First put the TextArea.setSingleLineTextArea(false) , and grow by content true.

LWUIT, How to create a custom label for form title

I want to know how to create a label that contains two icons, one on each side and set it as the title bar for the form element (LWUIT widgets).
Form has a function to get a titleArea then you can put some components what you want.
Form f = new Form();
Container c = f.getTitleArea();
Label iconLabel1 = new Label("leftIcon");//using Image
Label iconLabel2 = new Label("rightIcon");//using Image
c.addComponent(BorderLayout.WEST, iconLabel1);
c.addComponent(BorderLayout.EAST, iconLabel2);
You can just add a component to the north portion of the screen which is the recommended way that will work properly and won't break for newer versions of LWUIT/Codename One.
When you don't set a title it will just work and you can give it the Title UIID. LWUIT 1.5 and newer have a TitleArea container but I suggest you stay away from it since CodenameOne customizes it quite allot for iOS/Android 4.x etc.
Use the setTitleComponent(Label title) method.
EDIT :
Derive the Label class and implement the paint method where you can use the Graphics method to draw Images and texts. Also set the label's text position to Label.CENTER .

show popovers on uilabel touch in iphone

I have a number of UILabels on a single view of a iphone application ios 4.3. How to handle touch events for all these labels at one time? I wanted to show pop overs on touch of that label. I know popovers are not available on iphone and will be making my custom ones.
what i did was using UITapGestureRecognizer and adding an action #selector(labelTap:) and then doing [label addGestureRecognizer:TapGestureRecognizerObject. But when i use the same UITapGestureRecognizer for all my UIlabels only the last added label shows the tap action.
i have set userInteractionEnable to YES.
Can any one point me to the right direction?
You need to create separate UITapRecognizer for tracking different UILabel, when a UIGestureRecognizer is added to multiple views, it will only track event from last it added to. To better understand why you need different instances of UITapRecognizer, think of it as a UIView that only handles touches event but doesn't do any drawing.

How place the components the front of another one?

I want to place the components A and B over component with List. I need that would text of list will be to visible. I can not find which layout can do it.
How this behavior is in lwuit? What solutions exist?
The question is somewhat unclear, jmunoz answer is correct if you want component's A and B to reside at the bottom of the screen and the list to scroll above. However from the drawing it seems you want an "always on top" effect which you can achieve either via a glass pane (for non-interactive components) or via the LayeredLayout class.
This is actually quite simple using the following:
myForm.setLayout(new LayeredLayout());
myForm.setScrollable(false);
// will occupy the entire area of the form but should be scrollable
myForm.addComponent(componentUnderneath);
Container south = new Container(new BorderLayout());
myForm.addComponent(south);
south.addComponent(BorderLayout.SOUTH, whateverYouWantToPlaceOnTopInTheSouth);
You must do the following:
The Form must not do scroll. Use Form.setScrollable(false). Set the layout of the ´Form´ to BORDER_LAYOUT, myForm.setLayout(new BorderLayout()) . Ok in BorderLayoutyou can put the components in the Form as you want.
Put the Listcomponent in the center of the BorderLayout with myForm.addComponent(BorderLayout.CENTER, List) and the other two elements in the south of the layout using
Container southContainer = new Container();
southContainer.addComponent(A);
southContainer.addComponent(B);
myForm.addComponent(BorderLayout.SOUTH, southContainer)
With this you can get a scrollable Listand two elements always visible.

Resources