비슷한 주제를 모두 읽었지만 여전히 문제를 파악할 수 없습니다. 여기에 LineChart를 사용하고 스크롤 할 때 확대/축소하고 싶습니다. 이 같은 코드 :JavaFX 비 응용 프로그램 스레드에서 UI를 변경할 수 없습니다.
EventHandler<ScrollEvent> scrollHandler = new EventHandler<ScrollEvent>(){
@Override
public void handle(ScrollEvent event) {
System.out.println("view scroll");
NumberAxis xAxis = ((LineChartView)view).getXAxis();
xAxis.setLowerBound(xAxis.getLowerBound() + 10);
xAxis.setUpperBound(xAxis.getUpperBound() - 10);
Platform.runLater(new Runnable(){
@Override
public void run() {
curStage.show();
}
});
}
};
로그이 프로그램은 청취자로 실행 말한다, 그러나 선 차트에 변화가 없다 : 여기
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
Scene scene = new Scene(root);
DataModel dataModel = new DataModel();
dataModel.getData("value", "value_tbl"); // get data from specified file
IViewFactory viewFactory = new LineViewFactory();
view = viewFactory.create(); // create lineChart view
view.setData(dataModel.getData("value", "value_tbl")); // load data into LineChart, here should be XYChart.Series
this.getCanvas(root).getChildren().addAll(view.getView());
stage.setScene(scene);
curStage = stage;
view.getView().setOnScroll(this.scrollHandler); // set listener
stage.show();
}
와 청취자입니다.
Application의 start() 메서드와 scrollHandler는 둘 다 응용 프로그램에 있습니다. 그러나 LineChartView 프로그램은 다른 패키지에 있습니다. 그럼, 아무도 왜 그것이 작동하지 않는 이유를 지적 할 수 있습니까? 정말 고맙습니다!
나는 작동 할 수있는 비슷한 코드를 읽었지만 큰 차이가 있습니다. 모든 프로그램이 모두 Application 아래에 있습니다.
정말 고마워요! 당신의 충고는 전체 메커니즘에 대해 훨씬 더 분명하게 해줍니다. 그리고 문제는 setAutoRange (false)입니다. – xing