2012-02-08 4 views
0

파일에서 가져온 텍스트를 표시해야하는 Jpanel이 있습니다. 하지만 단어 (초당 한 단어)로 텍스트 단어를 표시해야합니다. 내가 어떻게 해? paintComponent 메서드를 재정의하려고 시도했지만 점진적으로 텍스트를 표시 할 수 없습니다.JPanel 텍스트를 점진적으로 표시

답변

1

타이머 (스윙 패키지에있는 것)를 찾고 있습니다. 당신이 단어 분할 부분은 준비 가정하면, 다음의 의사 코드는 JTextArea에에 연속적를 추가하는 방법의 예는 다음과 같습니다

ActionListener l = new ActionListener() { 
    @Override 
    public void actionPerformed(...) { 
     textArea.append(words.remove(0)); 
    } 
}; 
Timer timer = new Timer(1000, l); 
timer.start();  

당신이 정말로 수동으로 사용자 정의 패널의 문자열을 그릴하려는 경우,

class MyPanel .... 
    String text; 
    public void append(String word) { 
     text += word; 
     repaint(); 
    } 
    @Override 
    protected void paintComponent(...) { 
     super.paintComponent(..); 
      // draw the string 
    } 
} 
1

더 나은 방법 일 수 있지만이 경우 JPanel을 확장하는 고유 한 JPanel을 만들고 오버 라이드 public void paint g), 전체 텍스트가 포함 된 문자열, myWords라고하는 또 다른 문자열, currentWords라는 다른 문자열, 마지막으로 넣은 단어를 계산하는 카운터

먼저 배열을 채울 필요가있는 문자열 of Words, 이와 비슷합니다. 생성자 또는 파일을 읽을 때

myWords = entireText.split(" "); 

후 페인트 방법, 당신의 타이머 내부 때, X, Y의 좌표는, 당신은

currentWords+= myWords[counter+1]; 

을 넣고 마지막으로 지난 0,0

g.drawString(currentWords,0,0); 

을 넣어 1 초입니다 어쩌면 새 줄에 텍스트를 넣기 위해 이것을 제어해야 할 것입니다.

+0

같은이 _가 방법이 당신의 actionListener에 그에게 전화하자, 뭔가 내가 downvote을 제거하여 hekp –

+0

을 위해, 그것에게 감사를 시도해거야 - 전반적인 설명은 단지 잘못된 페인트 방법을 suggeting, 괜찮습니다 . 그것은 _not_ 페인트 (...)입니다. paintComponent (..)입니다. – kleopatra

관련 문제