다른 것들 사이에서 (jfreechart를 사용하여) 그래프를 표시하는 양식을 만들었습니다. 그래프는 동적으로 생성 된 데이터를 표시합니다. 다음과 같이 내가 스레드를 사용하는 데이터를 생성하려면 :JButton에 대한 응답으로 스레드를 실행하는 중 문제가 발생했습니다.
class Grapher extends JFrame implements Runnable{
....
public void run(){
Thread thisT = Thread.currentThread();
while(true){
try{
double a = getRand();
System.out.println(a);
Millisecond millisecond = new Millisecond();
if(a == 100){thisThread.stop();}
timeseries.add(millisecond, a);
Thread.sleep(100);
}catch(InterruptedException e){}
}
나는이 같은 내 프로그램을 설정, 내 GUI 내에서 미세 그래프 표시하지만, 즉시 시작됩니다. 내가 마지막 줄 graph.run()
을 그리워하고하는 JButton 이벤트 리스너에 이것을 추가하면
Grapher graph = new Grapher();
MyForm testForm = new MyForm();
testForm.addGraph(graph);
testForm.pack();
testForm.setVisible(true);
graph.run();
, 내가 버튼을 클릭하면, 나는 콘솔에 표시 번호를 얻을로 스레드가 실행되는 것을 볼 수 있습니다. 그러나 그래프가 업데이트되지 않고 전체 양식이 멈 춥니 다.
왜 이런 일이 발생하는지 잘 모르겠지만 스레드와 관련이 있다고 생각합니까?
'확장 JFrame은 Runnable을 구현합니다 .'는 열악한 디자인처럼 보입니다. 또한,'Thread.stop'은 더 이상 사용되지 않습니다. 또한'run'에서'currentThread'는 항상 쓰레드 자체입니다. 귀하의 질문에 대한 대답은 없습니다. – khachik
그래, 내 IDE가 stop이 더 이상 사용되지 않는다고 말하고있다. 나는 그걸 들여다 보았다. 그러나, 나는 한 번 스레드를 멈출 수있는 방법을 모르겠다 == 100. 팁 주셔서 감사합니다 :) – Roger