2017-05-17 3 views
0

나는 레이아웃을 시각화하고 내가 개발 해왔고 JavaFX 캔버스를 통한 최선의 방법을 생각한 기본 신경 네트워크 프로그램의 작업을 위해 GUI에서 작업 해왔다. 각주기는, 프로그램은 화면이 다음 올바른 장소에서 노드 (타원형) 및 연결 (라인)을 그릴JavaFX 캔버스를 업데이트하는 방법은 무엇입니까?

GraphicsContext gc = canvas.getGraphicsContext2D(); 
gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight()); 
gc.fillOval(x, y, 30, 30); 
gc.strokeLine(x1, y1, x2, y2); 

를 사용하여 상태를 다시 그립니다 웁니다. 그러나 예상대로 각 반복마다 디스플레이를 업데이트하는 대신 모든 반복이 완료되고 캔버스에서 더 이상 수행 할 드로잉이 없을 때까지 캔버스가 공백으로 유지됩니다.

캔버스 업데이트가 완료되면 (예 : 데이터가 변경 될 때 변경) 캔버스 업데이트를 어떻게 작성합니까?

도움 주셔서 감사합니다.

+1

GUI를 다시 그리는 데 JavaFX 시간을주지 않고 JavaFX 응용 프로그램 스레드에서 모든 것을하고 있습니까? – fabian

+0

계산 (예 : 역 전파)은 별도의 스레드에서 수행됩니다. 드로잉은 주 스레드에서 수행되며 다른 스레드의 캔버스에 그릴 수 없다는 것을 알고 있습니다. –

+0

계산 처리가 별도의 스레드에서 수행되고 그리기가 애니메이션 타이머를 사용하여 수행되도록 코드를 수정했습니다. 그래도 문제는 해결되지 않았으며 콘텐츠는 스레드가 학습 데이터 반복을 마친 후에 만 ​​표시됩니다. –

답변

1

문제는 내 스레드가 제대로 설정되지 않아서 완료 될 때까지 호출 한 스레드에서 추가 처리를 일시 중단한다는 것이 었습니다.

관련 문제