2012-04-06 3 views
0

Я пытался установить информер на этикетке с LWUIT 1.5, столкнулся этот вопрос: если я устанавливаю label.setRTL (истина), а затем вызватьпроблема с LWUIT справа налево метка тикер

label.startTicker(UIManager.getInstance().getLookAndFeel().getTickerSpeed(), true); 

тикер просто показывает первые 21 символ текста ярлыка и игнорирует остальные.

Я пробовал:

label.setRTL(false); 
label.startTicker(UIManager.getInstance().getLookAndFeel().getTickerSpeed(), true); 

он показывает OK, текст идет слева направо, но когда я ставлю это в FocusListener (причины тикер следует начинать, когда метка получать фокус и остановка после это фокус), он просто меняет направление (идет справа налево).

вот что я делаю:

Label test = new Label(); 
Container c1 = new Container(new FlowLayout()); 


test.setText("1234567890ABCDEFGHIJ1234567890"); 
test.setFocusable(true); 
test.setRTL(false); 
test.addFocusListener(new FocusListener(){ 

     public void focusGained(Component cmpnt) { 
      ((Label)cmpnt).setRTL(false); 
      ((Label)cmpnt).startTicker(UIManager.getInstance().getLookAndFeel().getTickerSpeed(), false); 
     } 

     public void focusLost(Component cmpnt) { 
      ((Label)cmpnt).stopTicker(); 
     } 
}); 
c1.addComponent(test); 

ответ

0

Я нашел проблему. неправильное направление происходит, потому что я добавил focusListener перед добавлением метки в контейнер (c1). поэтому я только что сделал это:

c1.addComponent(test); 
test.addFocusListener(new FocusListener(){ 

    public void focusGained(Component cmpnt) { 
     ((Label)cmpnt).setRTL(false); 
     ((Label)cmpnt).startTicker(UIManager.getInstance().getLookAndFeel().getTickerSpeed(), false); 
    } 

    public void focusLost(Component cmpnt) { 
     ((Label)cmpnt).stopTicker(); 
    } 
}); 

и он просто работал. на самом деле я получил идею от исходного класса Ярлыка коды (строки 149 ~ 153):

// solves the case of a user starting a ticker before adding the component 
    // into the container 
    if(isTickerEnabled() && isTickerRunning() && !isCellRenderer()) { 
     getComponentForm().registerAnimatedInternal(this); 
    } 

эта часть не работает, но я не знаю, почему. просто надеюсь, что кто-то исправит эту ошибку.

1

Посмотрите на setLabelFor, он отметит метку для теста, когда фокус фокусировки теста. Вероятно, вы должны установить RTL глобально в классе внешнего вида.

 Смежные вопросы

  • Нет связанных вопросов^_^