我试图让一个简单的矩形移动拖动。我让它移动,但当我再次尝试拖动时,它首先恢复到初始拖动之前的初始位置。我尝试过使用StackPane,FlowPane,Pane和AnchorPane。
public View getView() {
View view = new View("Test View");
view.setName(name);
Pane pane = new Pane();
rect.setOnMousePressed((MouseEvent me) -> {
xVal = me.getSceneX();
yVal = me.getSceneY();
System.out.println("PRESSED_" + Double.toString(rect.getX()));
});
rect.setOnMouseReleased((MouseEvent me) -> {
System.out.println("RELEASE_" + Double.toString(rect.getX()));
});
rect.setOnMouseDragged((MouseEvent me) ->{
final double diffX = me.getSceneX() - xVal;
final double diffY = me.getSceneY() - yVal;
System.out.println("SET_" + Double.toString(rect.getX()));
rect.setX(diffX);
rect.setY(diffY);
});
pane.getChildren().add(rect);
view.setCenter(pane);
return view;
}
注意: rect
,xVal
,yVal
都是类属性。
问题是我可以移动矩形就好了。然而,当我再次尝试移动时,矩形似乎跳回到矩形的原始点。您可以在下图中看到它似乎还原的位置:
注意: diffX
和diffY
final
setTranslate()
这一事实并非如此。
另一个注意事项:我也尝试了getTransforms().add()
以及library(rvest)
library(dplyr)
pg <- read_html("http://www.svs.cl/institucional/mercados/consulta.php?mercado=S&Estado=VI&consulta=CSVID&_=1484105706447")
html_nodes(pg, "table") %>%
html_table() %>%
.[[1]] %>%
tbl_df() %>%
select(1:2)
## # A tibble: 36 × 2
## R.U.T. Entidad
## <chr> <chr>
## 1 99588060-1 ACE SEGUROS DE VIDA S.A.
## 2 76511423-3 ALEMANA SEGUROS S.A.
## 3 96917990-3 BANCHILE SEGUROS DE VIDA S.A.
## 4 96933770-3 BBVA SEGUROS DE VIDA S.A.
## 5 96573600-K BCI SEGUROS VIDA S.A.
## 6 96656410-5 BICE VIDA COMPAÑIA DE SEGUROS S.A.
## 7 96837630-6 BNP PARIBAS CARDIF SEGUROS DE VIDA S.A.
## 8 76418751-2 BTG PACTUAL CHILE S.A. COMPAÑIA DE SEGUROS DE VIDA
## 9 76477116-8 CF SEGUROS DE VIDA S.A.
## 10 99185000-7 CHILENA CONSOLIDADA SEGUROS DE VIDA S.A.
## # ... with 26 more rows
......
答案 0 :(得分:0)
好的,所以我正在摆弄它并且我发现每次按下时,矩形的X和Y坐标都在(0,0)
校准。所以我所要做的就是在初始鼠标按下事件中将xVal
和yVal
设置为0。但是,这会使xVal
和yVal
变得微不足道。因此,它们可以被删除。不确定这是否是最佳解决方案,但它对我有用:
rect.setOnMousePressed((MouseEvent me) -> {
System.out.println("PRESSED_" + Double.toString(rect.getX()));
});
rect.setOnMouseReleased((MouseEvent me) -> {
System.out.println("RELEASE_" + Double.toString(rect.getX()));
});
rect.setOnMouseDragged((MouseEvent me) ->{
double diffX = me.getX() - rect.getWidth() / 2;
double diffY = me.getY() - rect.getHeight() / 2;
System.out.println("SET_" + Double.toString(rect.getX()));
rect.setX(diffX);
rect.setY(diffY);
});