【问题标题】:issue with lwuit right-to-left label tickerlwuit 从右到左标签的问题
【发布时间】:2012-04-06 12:40:02
【问题描述】:

我试图在带有 lwit 1.5 的标签上设置ticker,遇到了这个问题: 如果我设置 label.setRTL(true) 然后调用

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

ticker 只显示标签文本的前 21 个字符并忽略其余字符。

我试过了:

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

它显示正常,文本从左到右,但是当我在 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);

【问题讨论】:

    标签: java-me lwuit right-to-left ticker


    【解决方案1】:

    查看setLabelFor,当测试获得焦点时,它会标记测试标签。您可能应该在外观类中全局设置 RTL。

    【讨论】:

      【解决方案2】:

      我发现了问题。发生错误的方向是因为我在将标签添加到容器 (c1) 之前实现了 focusListener。所以我就这样做了:

      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();
          }
      });
      

      而且它很有效。 实际上我是从 Label 类源代码(第 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);
          }
      

      这部分不起作用,但我不知道为什么。只是希望有人修复这个错误。

      【讨论】:

        猜你喜欢
        • 2022-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多