현재 응용 프로그램에서는 AnchorPane을 내용으로하는 ScrollPane을 만들었습니다. 사용자의 작업에 따라이 AnchorPane은 Canvas를 사용하는 이미지로 채워질 것입니다 (이미지에 대한 추가 정보를 그리는 데 필요함).뷰포트 외부의 객체를 표시하는 JavaFX ScrollPane
그러나 ScrollPane을 통해 스크롤하면 ViewPort 안에 있지 않을 때에도 모든 하위 이미지가 다시 칠되고 있습니다. 다른 누구에게도이 문제 또는 해결책이 있습니까?
스크린 샷 : 스크롤의 https://dl.dropboxusercontent.com/u/51537629/images%20drawn%20outside%20of%20viewport.png
초기화 : 뷰에 모든 아이콘의
private VBox createIconPane(TaskInformation tinfo) {
VBox vbox = new VBox();
Canvas canvas = new Canvas(75, 75);
GraphicsContext gc = canvas.getGraphicsContext2D();
Image im;
if (tinfo.getCurrent() != null) {
if (tinfo.isCurrentStop()) {
String status = utilities.getCurrentTaskVersion(tinfo.getTask()).getStatus();
if (status.equals("finished")) {
im = new Image(this.getClass().getClassLoader().getResourceAsStream("dna-current.png"));
} else if (status.equals("failed")) {
im = new Image(this.getClass().getClassLoader().getResourceAsStream("dna-failed.png"));
} else {
im = new Image(this.getClass().getClassLoader().getResourceAsStream("dna-processing.png"));
}
} else {
im = new Image(this.getClass().getClassLoader().getResourceAsStream("dna-current.png"));
}
} else {
im = new Image(this.getClass().getClassLoader().getResourceAsStream("dna-excluded.png"));
}
gc.drawImage(im, 5, 5);
gc.setStroke(Color.GREEN);
gc.strokeText(tinfo.getFinished() + "", 59, 15);
gc.setStroke(Color.RED);
gc.strokeText(tinfo.getFailed() + "", 59, 28);
gc.setStroke(Color.BLUE);
gc.strokeText(tinfo.getProcessing() + "", 59, 41);
Label namelabel = new Label(tinfo.getTask().getName());
namelabel.setLayoutX(0);
namelabel.setLayoutY(68);
vbox.getChildren().addAll(canvas,
return vbox;
}
추가 :
private void createChildIcon(TaskInformation tinfo) {
VBox taskicon = createIconPane(tinfo);
taskicon.setLayoutX((tinfo.getTask().getLevel() - 6)/2 * 120 + 5);
if (tinfo.getTask().getLevel() <= levelLastAddedTask && maxYCoor != 5) {
maxYCoor += 95;
}
levelLastAddedTask = tinfo.getTask().getLevel();
taskicon.setLayoutY(maxYCoor);
iconPane.getChildren().add(taskicon);
for (int count = 0; count < tinfo.getChildren().size(); count++) {
createChildIcon(tinfo.getChildren().get(count));
}
}
아이콘의
iconPane = new AnchorPane();
iconPane.setStyle("-fx-background-color: white; -fx-border-color: gray;");
iconPane.setMinHeight(546);
iconPane.setMinWidth(814);
scrollpane = new ScrollPane();
scrollpane.setContent(iconPane);
scrollpane.setVisible(false);
AnchorPane.setTopAnchor(scrollpane, 13.0);
AnchorPane.setBottomAnchor(scrollpane, 13.0);
AnchorPane.setLeftAnchor(scrollpane, 13.0);
AnchorPane.setRightAnchor(scrollpane, 13.0);
창조 0
JDK : 2.2.21
후 우리가 윈도우 문제가 될 수 있어야한다는 것을 발견 내 동료 중 하나 몇 가지 테스트 : 7는 있지만 이전 버전뿐만 아니라
JFX로 컴파일 할 수 있습니다. Linux에서는 완벽하게 작동하지만 Windows에서는 작동하지 않습니다.
아마도 버그 일 수 있습니다. 그러나 나는 그런 것을 본 적이 없다. JDK 버전, JFX 버전 (아는 한 버전, 빌드)을 제공하고 테스트 케이스를 제공 할 수 있습니까? - 문제를보고 시도 할 수있는 코드 조각. 감사. –