我有一个带有MenuBar的BorderPane和各种MenuItems。其中一个menuItem标记为“矩形”,一旦选中,就会创建一个基本矩形。一旦出现矩形,我希望能够使用鼠标事件拖动和移动它。
class DownloadTask extends AsyncTask<String, String, String> {
private TextView percentComplete;
private int prog=0;
private ItemSong itemSong;
DownloadTask(TextView percentComplete, ItemSong itemSong){
this.percentComplete = percentComplete;
this.itemSong = itemSong;
}
protected String doInBackground(String... f_url) {
itemSong.setDownloadStatus(true);
while (prog <= 100) {
itemSong.setCompleted(prog);
publishProgress("" + (prog));
try {
Thread.sleep(500);
} catch (InterruptedException e) {
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();
}
prog = prog+10;
}
return null;
}
@Override
protected void onProgressUpdate(String... progress) {
// setting progress percentage
percentComplete.setText(progress[0].toString());
}
@Override
protected void onPostExecute(String file_url) {
itemSong.setDownloadStatus(false);
}
}
理论上能够移动矩形我使用此代码
// Draw Rectangle
rectMenuItem.setOnAction(e ->
{
rect = new Rectangle();
rect.setX(40);
rect.setY(40);
rect.setWidth(130);
rect.setHeight(100);
rootNode.getChildren().add(rect);
});
但由于某种原因,一旦使用MenuItem创建矩形,通常应该用鼠标拖动移动对象的代码不会移动项目?那是为什么?
答案 0 :(得分:0)
想通了! 而不是
rect.setOnMouseDragged(g ->
{
rect.setX(g.getX());
rect.setY(g.getY());
});
它是
pane.setOnMouseDragged(g ->
{
rect.setX(g.getX());
rect.setY(g.getY());
});