通过选择菜单项Javafx来创建形状

时间:2016-03-30 22:33:55

标签: javafx-8

我有一个带有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创建矩形,通常应该用鼠标拖动移动对象的代码不会移动项目?那是为什么?

1 个答案:

答案 0 :(得分:0)

想通了! 而不是

    rect.setOnMouseDragged(g ->
{
    rect.setX(g.getX());
    rect.setY(g.getY());
});

它是

    pane.setOnMouseDragged(g ->
{
    rect.setX(g.getX());
    rect.setY(g.getY());
});