您好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);
}
示例图片:
我和你描述的问题有类似的问题。然而在我的情况下,它不是覆盖层而是抽屉本身。可见时的叠加层会在可见时包含整个UI,因此我很快就确定这不是我的问题,因为它只是UI左侧的按钮没有接收事件。相反,受影响的区域似乎限制了我设置的默认抽屉尺寸。
我可以看到两种解决方案:
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);
});
希望这可以帮助!