图像显示在菜单栏的顶部

时间:2019-04-05 09:59:03

标签: java javafx fxml

亲爱的

我正在尝试使用JavaFX创建应用程序。但是由于某种原因,当我尝试移动图像时,该图像显示在MenuBar的顶部,但显示在其他窗格的后面。当然,我想避免这种情况。

(对不起,没有图像,因为我没有足够的声誉...)

我已经尝试过对它们进行分组并调用toFront()方法,但是最糟糕的是更改所有内容。

这是我的fxml

<MenuBar>
        <menus>
            <Menu text="File">
                <items>
                    <MenuItem text="Save"/>
                    <SeparatorMenuItem />
                    <MenuItem text="Return"/>
                    <MenuItem text="Quit"/>
                </items>
            </Menu>
        </menus>
    </MenuBar>

    <VBox>
        <Pane fx:id="imagePane"/>
        <HBox fx:id="buttonsPane" styleClass="white">
            <Button text="B1" prefHeight="50" prefWidth="50"/>
            <Button text="B2" prefHeight="50" prefWidth="50"/>
        </HBox>
    </VBox>

这是我的控制人

public void enter(Scene scene) {
        Image image = new Image("images/square.png");
        ImageView background = new ImageView(image);
        imagePane.getChildren().add(background);
        background.setTranslateX(20);
        background.setTranslateY(20);

        scene.getRoot().addEventFilter(MouseEvent.MOUSE_PRESSED, mev -> {
            int y = 0;
            switch(mev.getButton()) {
            case PRIMARY:
                y = (int) background.getTranslateY();
                background.setTranslateY(y - 6);
                break;
            case SECONDARY:
                y = (int) background.getTranslateY();
                background.setTranslateY(y + 43);
                break;
            default:
                break;
            }
        });
    }

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案:我将带有图像的窗格放在TablePane中:

<TabPane rotateGraphic="true">
    <Tab closable="false">
        <Pane fx:id="imagePane"/>
    </Tab>
</TabPane>

老实说,我不知道为什么它起作用,但是它起作用:-)