亲爱的
我正在尝试使用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;
}
});
}
答案 0 :(得分:0)
我找到了一个解决方案:我将带有图像的窗格放在TablePane中:
<TabPane rotateGraphic="true">
<Tab closable="false">
<Pane fx:id="imagePane"/>
</Tab>
</TabPane>
老实说,我不知道为什么它起作用,但是它起作用:-)