您好,StackOverflow小组,
我是Javafx的新手,在阅读了该主题之后,我决定开始构建我的第一个应用程序。
我的应用程序有一个主页和一个左侧面板上的hamburgerDrawer。我遇到的麻烦是,当我加载应用程序时,抽屉叠加层会阻塞其下面的节点。我在关闭抽屉时尝试使用方法SetDefaultDrawerSize()
到0
,并使用SetDefaultDrawerSize(900)
的特定大小,但没有成功...抽屉仍然阻止下面的内容。
非常感谢您的帮助...谢谢。...
@Override
public void initialize(URL url, ResourceBundle rb) {
try {
AnchorPane drawerContent = FXMLLoader.load(getClass().getResource("/materialitemtracker/view/AnchorPaneHamburgerDrawerView.fxml"));
hamburgerDrawer.setSidePane(drawerContent);
hamburgerDrawer.setOverLayVisible(true);
hamburgerDrawer.setResizableOnDrag(true);
HamburgerBackArrowBasicTransition burgerTask = new HamburgerBackArrowBasicTransition(hamburger);
burgerTask.setRate(-1);
hamburger.addEventHandler(MouseEvent.MOUSE_PRESSED, (e) -> {
burgerTask.setRate(burgerTask.getRate() * -1);
burgerTask.play();
if (hamburgerDrawer.isShown()) {
hamburgerDrawer.close();
// hamburgerDrawer.setDefaultDrawerSize(0);
} else {
hamburgerDrawer.open();
// hamburgerDrawer.setDefaultDrawerSize(900);
}
});
} catch (IOException ex) {
Logger.getLogger(AnchorPaneMainController.class.getName()).log(Level.SEVERE, null, ex);
}
样本图像:
答案 0 :(得分:1)
我遇到了与您描述的问题类似的问题。但是在我的情况下,这不是覆盖物,而是抽屉本身。可见时的覆盖层将覆盖可见时的整个UI,因此我迅速确定这不是我的问题,因为只有UI左侧的按钮没有接收事件。相反,似乎受影响的区域受到我设置的默认抽屉大小的限制。
我可以看到两种解决方案:
将鼠标按钮移至UI结构中抽屉上方。这对我来说不起作用,因为按钮将与用户界面中展开的抽屉重叠。
为抽屉提供一个负偏移,并在运行时根据抽屉状态更改约束。我的抽屉位于AnchorPane内部UI的左侧,因此设置负的左锚定值开头(对于此示例为-255)。然后根据状态,执行以下操作。
drawer.setOnDrawerOpening(event ->
{
AnchorPane.setRightAnchor(drawer, 0.0);
AnchorPane.setLeftAnchor(drawer, 0.0);
AnchorPane.setTopAnchor(drawer, 0.0);
AnchorPane.setBottomAnchor(drawer, 0.0);
});
drawer.setOnDrawerClosed(event ->
{
AnchorPane.clearConstraints(drawer);
AnchorPane.setLeftAnchor(drawer, -255.0);
AnchorPane.setTopAnchor(drawer, 0.0);
AnchorPane.setBottomAnchor(drawer, 0.0);
});
希望这会有所帮助!