I was again having some interesting problem with LWUIT border. I had different kind of border for the normal list item and focused list item in the UI design. So obviously I had two UIID ListRenderer and ListRendererFocus defined in the theme.
But somehow the focused border was not getting painted !!
I didnt have much time to dig into details, but manually changing the border in ListCellRenderer fixed this.
But somehow the focused border was not getting painted !!
I didnt have much time to dig into details, but manually changing the border in ListCellRenderer fixed this.
public class MyListRenderer extends Label implements ListCellRenderer { //... /** To draw the background of the focused item. */ private Label focus = new Label(""); /** Border set by lwuit theme. */ private Border originalBorder; public ListChannelRenderer() { //..other stuffs... originalBorder = getStyle().getBorder(); } /**{@inheritDoc} */ public Component getListCellRendererComponent
(List list, Object value, int index, boolean isSelected) {
//...change label content based on list index //When selected, we want to draw the focused border only, // that's why setting to null //Lwuit draws only the original background even for focused if (list.getSelectedIndex() == index && list.hasFocus()) { this.getStyle().setBorder(null); } else { this.getStyle().setBorder(originalBorder); } return this; } /**{@inheritDoc} */ public Component getListFocusComponent(List list) { return focus; } }
No comments:
Post a Comment