2017-10-19 6 views
0

JavaFx를 사용하여 막 대형 차트 및 누적 막 대형 차트에 일부 데이터를 표시하려고합니다. 나는 일식 산소를 사용하여 데이터를 채우는 4 시리즈를 사용하고있다.하나의 페이지에서 유사한 데이터를 사용하는 막 대형 차트 및 스택 막 대형 차트

저는 막대 그래프에서 series1과 series2를 사용합니다. 스택 막 대형 차트에서 series1, series2, series3 및 series4를 사용합니다.

JavaFx 장면 작성기를 사용하여 화면을 만들었습니다. 장면을 채우고 데이터를 표시하십시오. 내 문제는 두 그래프를 동시에 표시 할 수 없다는 것입니다. 인구의 순서에 따라 후자 만 채워집니다. 추가 한 비트는 마우스 입력 이벤트에서 그래프가 확장 된 다음 마우스 나가기 이벤트의 원본 크기로 줄어 듭니다.

내가 뭘 잘못하고 있는지 지적하여 도와 줄 수 있습니까? 여기

@FXML 
private void bcsbg_mouseentered() { 
    if (!clickEntered) { 
     clickEntered = true; 
     prefWidth = bcByGroup.getPrefWidth(); 
     prefHeight = bcByGroup.getPrefHeight(); 
     bcByGroup.setPrefSize(1500, 900); 
     gXAxis.setPrefHeight(Region.USE_COMPUTED_SIZE); 
     gXAxis.setPrefWidth(Region.USE_COMPUTED_SIZE); 
     gYAxis.setPrefHeight(Region.USE_COMPUTED_SIZE); 
     gYAxis.setPrefWidth(Region.USE_COMPUTED_SIZE); 
     gXAxis.setVisible(true); 
     gYAxis.setVisible(true); 
     gXAxis.setLabel("Value"); 
     gYAxis.setLabel("Question"); 
     gXAxis.setTickLabelsVisible(true); 
     gYAxis.setTickLabelsVisible(true); 
     gXAxis.setTickMarkVisible(true); 
     gYAxis.setTickMarkVisible(true); 

     sbcByAll.setVisible(false); 

    } else { 
     clickEntered = false; 
     bcByGroup.setPrefSize(prefWidth, prefHeight); 
     gXAxis.setPrefHeight(0); 
     gXAxis.setPrefWidth(0); 
     gYAxis.setPrefHeight(0); 
     gYAxis.setPrefWidth(0); 
     gXAxis.setVisible(false); 
     gYAxis.setVisible(false); 
     gXAxis.setLabel(""); 
     gYAxis.setLabel(""); 
     gXAxis.setTickLabelsVisible(false); 
     gYAxis.setTickLabelsVisible(false); 
     gXAxis.setTickMarkVisible(false); 
     gYAxis.setTickMarkVisible(false); 

     sbcByAll.setVisible(true); 
     sbcByAll.getData().clear(); 
     sbcByAll.getData().addAll(series1, series2, series3, series4); 

    } 

    bcByGroup.getData().clear(); 
    bcByGroup.getData().addAll(series1, series2); 

} 

답변

0

문제를 다음 코드에서가 아니라 방법으로 차트 API 기록 된 바 내 코드입니다. (저는 보통 언어 나 표준 라이브러리를 비판하는 팬이 아니지만이 숙제의 일부는 숙련 된 인턴에서 특히 숙취가 심한 숙제로 작성된 것 같습니다.)

XYChart.Data 클래스는 데이터를 표시하는 reference to the node을 유지합니다 . (이는 MVC의 가장 기본적인 원칙에 명백히 위배되며 데이터를 다른 클래스로 완전히 중복되게 분리합니다.)

따라서 두 차트에서 동일한 데이터를 사용하려고하면 동일한 노드가 두 부모는 허용되지 않으며 한 곳에서 데이터 시각화 만 볼 수 있습니다. 불행히도 각 차트의 데이터를 복제해야합니다.

0

감사합니다. Dave. 당신 말이 맞아요. XYData.Chart에 대한 표준 문서를 통해이 객체가 데이터가 표시 될 노드에 연결된다는 것을 알았습니다.

저는 실제로 복제를 피하기를 희망했지만 데이터 시리즈가 복제되어 다른 차트에 첨부 되 자마자 코드가 작동합니다.

데이브 의해 바와 같이

,

는 XYChart.Data 클래스는 데이터를 표시하는 reference to the node 유지. (이는 MVC의 가장 기본적인 원칙에 명백하게 위배되며 데이터를 다른 클래스로 완전히 분리 해 버립니다.)

Dave의 링크에 제공된 표준 설명서를 참조하십시오.