我创建了一个矩形对象的网格并将它们添加到一个Pane中。每个矩形都附有一个鼠标事件监听器,该监听器由MouseEvent.Entered触发。当用户将鼠标移动到矩形上时,处理程序会简单地更改矩形的颜色。问题在于,触发器似乎有相当大的延迟才能执行。有什么办法可以加速它,使其与鼠标实时同步?
我在这里上传了一段录像:https://screencast-o-matic.com/watch/cFQI0lqdHe
我在这里上传了一段录像:https://screencast-o-matic.com/watch/cFQI0lqdHe
public class WarehouseMap extends Pane {
private int xSpaces = 200;
private int ySpaces = 100;
private ArrayList<Rectangle> gridReferences = new ArrayList<Rectangle> ();
public WarehouseMap() {
setWidth(2000);
setHeight(1000);
initGrid();
}
public void initGrid() {
double rectWidth = getWidth() / xSpaces;
double rectHeight = getHeight() / ySpaces;
for(int x=0; x<xSpaces; x++) {
for(int y=0; y<ySpaces; y++) {
Rectangle gr = new Rectangle(x*rectWidth, y*rectHeight, rectWidth, rectHeight);
gr.setStroke(Color.GRAY);
gr.setFill(Color.TRANSPARENT);
gr.setStrokeWidth(1);
gr.addEventHandler(MouseEvent.MOUSE_ENTERED, new EventHandler<MouseEvent> () {
@Override
public void handle(MouseEvent event) {
gr.setFill(Color.DARKGRAY);
}
});
gr.addEventHandler(MouseEvent.MOUSE_EXITED, new EventHandler<MouseEvent> () {
@Override
public void handle(MouseEvent event) {
gr.setFill(Color.TRANSPARENT);
}
});
gridReferences.add(gr);
this.getChildren().add(gr);
}
}
}
}