Tôi đang chuyển đổi ứng dụng Swing/Graphics2D với nhiều bức vẽ tùy chỉnh cho ứng dụng JavaFX2. Mặc dù tôi hoàn toàn yêu thích API mới, nhưng dường như tôi gặp vấn đề về hiệu suất khi vẽ hình elip mà tôi muốn vẽ bên dưới con trỏ chuột ở bất kỳ nơi nào chuột được di chuyển. Khi tôi di chuyển con chuột của tôi một cách ổn định, không nhanh chóng lố bịch, tôi nhận thấy hình elip luôn luôn được vẽ một vài cm phía sau trên con đường chuột, và chỉ bắt kịp khi tôi ngừng di chuyển con trỏ. Điều này trong một scenegraph chỉ với một vài nút. Trong ứng dụng Swing của tôi, tôi không có vấn đề đó.cách chính xác để di chuyển một nút bằng cách kéo trong javafx 2?
Tôi tự hỏi liệu đây có phải là cách tiếp cận chính xác để vẽ hình dạng con trỏ chuột không?
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.SceneBuilder;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Ellipse;
import javafx.scene.shape.EllipseBuilder;
import javafx.stage.Stage;
public class TestApp extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
Pane p = new Pane();
final Ellipse ellipse = EllipseBuilder.create().radiusX(10).radiusY(10).fill(Color.RED).build();
p.getChildren().add(ellipse);
p.setOnMouseMoved(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
ellipse.setCenterX(event.getX());
ellipse.setCenterY(event.getY());
}
});
Scene scene = SceneBuilder.create().root(p).width(1024d).height(768d).build();
primaryStage.setScene(scene);
primaryStage.show();
}
}
cập nhật nhỏ: tôi nâng cấp lên JavaFX 2.2 và Java7u6 (trên Windows 7 64bit), dường như không tạo sự khác biệt mặc dù.
giải pháp của bạn tự nó đã giúp tôi rất nhiều, cảm ơn bạn! – Matteo
Tôi rất vui vì nó đã giúp bạn :) –