2012-04-22 8 views
2

내가 구현 한 움직이는 텍스트 티커는 매끄러운 방식으로 움직이지 않으며, 무거운 GUI 작업이 병렬로 실행되면 문제는 더욱 심각해진다.
필자가 직접 그린 이미지를 만들어 수동 이중 버퍼링을 사용하고 있습니다. 텍스트 티커의 움직임이 부드럽 지 않다

public static BufferedImage createBufferedImage(int w, int h) { 
     GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
     GraphicsDevice gs = ge.getDefaultScreenDevice(); 
     GraphicsConfiguration gc = gs.getDefaultConfiguration(); 
     return gc.createCompatibleImage(w, h, Transparency.TRANSLUCENT); 
    } 

가 그럼 난 DrawText에 (..)를 사용하여에 필요한 텍스트를 그릴, 그리고 그 후() 칠 부르심 :
는 데이터 변경, 나는 다음과 같은 코드를 사용하여 내 버퍼 이미지를 업데이트합니다.

병렬로 10 밀리 초마다 비동기 스레드가 이미지의 다음 X 위치를 계산 한 다음 repaint()를 호출합니다.

내 주요 구성 요소는 JComponet을 확장하고 아래에 설명 된대로의 paintComponent()는, 오버라이드 (override) :

@Override 
    protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     g.drawImage(baseImage, scrollTextX, 0, null); 
    } 

더 나은 움직임을 만들기 위해 어떤 트릭이 있습니까?
다른 GUI 작업의 영향을받지 않는 티커의 움직임을 만들 수 있습니까?

+0

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

답변

0

나는 이것이 Swing 응용 프로그램에서 사용되는 것으로 추측하고 있습니까? 그런 다음 AWT 이벤트 발송 스레드에서 UI 업데이트 작업을 수행해야한다고 생각합니다. SwingUtilities 클래스의 invokeLater 메서드를 사용하여이 작업을 수행 할 수 있습니다.