2012-04-06 2 views
0

내가 lwuit 1.5 레이블에 시세를 설정하려고했던이 문제에 직면 내가 (사실) 후 전화 label.setRTL을 설정하면문제는 오른쪽에서 왼쪽으로 라벨 시세

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

내가 문제를 발견했다. container (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(); 
    } 
}); 

그리고 간단하게 작동했습니다. 사실 나는 (라인 ~ 153 149) Label 클래스의 소스 코드에서 아이디어를 얻었다 :

// 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를 보면 테스트가 포커스를 얻었을 때 테스트 라벨이 표시됩니다. Look & Feel 클래스에서 RTL을 전역으로 설정해야합니다.

관련 문제