javafx中的动画菜单栏
有没有人可以在javafx中创建动画菜单栏。我需要显示菜单栏时,鼠标移动到顶部,并隐藏时,鼠标离开这个地区(25px的顶部)。目前我有一些解决方案,但它看起来不像我想要的那么漂亮,只需显示/隐藏而不进行任何滑动即可。)javafx中的动画菜单栏,java,javafx,menubar,Java,Javafx,Menubar,有没有人可以在javafx中创建动画菜单栏。我需要显示菜单栏时,鼠标移动到顶部,并隐藏时,鼠标离开这个地区(25px的顶部)。目前我有一些解决方案,但它看起来不像我想要的那么漂亮,只需显示/隐藏而不进行任何滑动即可。) root.setOnMouseMoved(新的EventHandler(){ @凌驾 公共无效句柄(MouseeEvent事件){ if(event.getY()
root.setOnMouseMoved(新的EventHandler(){
@凌驾
公共无效句柄(MouseeEvent事件){
if(event.getY()<25){
menuBar.setVisible(true);
根。setTopAnchor(clipPane,35.0);
}否则{
if(menuBar.isVisible()){
菜单栏设置可见(假);
}
if(menuFile.isShowing()){
试一试{
机器人机器人=新机器人();
bot.mousePress(InputEvent.BUTTON1_掩码);
bot.mouseRelease(InputEvent.BUTTON1_掩码);
}捕获(AWEX){
}
}
根。setTopAnchor(clipPane,0.0);
}
}
});
那么,有人可以帮助我们了解如何为“显示/隐藏菜单栏”添加滑动效果吗?经过几个小时的搜索后,我们自己通过并行转换实现了这一点。)
root.setOnMouseMoved(新的EventHandler(){
@凌驾
公共无效句柄(MouseeEvent事件){
if((event.getY()35)和&(fMenuVisible)){
TranslateTransition clipPane_幻灯片=新的TranslateTransition(持续时间.毫秒(300),clipPane);
clipPane_Slide.setFromY(35);
clipPane_Slide.setToY(0);
clipPane_幻灯片。设置循环计数(1);
clipPane_Slide.setAutoReverse(假);
TranslateTransition菜单栏\幻灯片=新的TranslateTransition(持续时间.毫秒(300),菜单栏);
菜单栏(幻灯片)setFromY(35);;
菜单栏滑动。设置玩具(0);
菜单栏滑动。设置循环计数(1);
菜单栏滑动。设置自动翻转(假);
ParallelTransition HideMenu=新的ParallelTransition();
HideMenu.getChildren().addAll(clipPane_幻灯片、菜单栏_幻灯片);
HideMenu.setCycleCount(1);
HideMenu.playFromStart();
fMenuVisible=假;
}
}
});
经过几个小时的搜索后,发现它是自己通过并行程序实现的
root.setOnMouseMoved(新的EventHandler(){
@凌驾
公共无效句柄(MouseeEvent事件){
if((event.getY()35)和&(fMenuVisible)){
TranslateTransition clipPane_幻灯片=新的TranslateTransition(持续时间.毫秒(300),clipPane);
clipPane_Slide.setFromY(35);
clipPane_Slide.setToY(0);
clipPane_幻灯片。设置循环计数(1);
clipPane_Slide.setAutoReverse(假);
TranslateTransition菜单栏\幻灯片=新的TranslateTransition(持续时间.毫秒(300),菜单栏);
菜单栏(幻灯片)setFromY(35);;
菜单栏滑动。设置玩具(0);
菜单栏滑动。设置循环计数(1);
菜单栏滑动。设置自动翻转(假);
ParallelTransition HideMenu=新的ParallelTransition();
HideMenu.getChildren().addAll(clipPane_幻灯片、菜单栏_幻灯片);
HideMenu.setCycleCount(1);
HideMenu.playFromStart();
fMenuVisible=假;
}
}
});
经过几个小时的搜索后,发现它是自己通过并行程序实现的
root.setOnMouseMoved(新的EventHandler(){
@凌驾
公共无效句柄(MouseeEvent事件){
if((event.getY()35)和&(fMenuVisible)){
TranslateTransition clipPane_幻灯片=新的TranslateTransition(持续时间.毫秒(300),clipPane);
clipPane_Slide.setFromY(35);
clipPane_Slide.setToY(0);
clipPane_幻灯片。设置循环计数(1);
clipPane_Slide.setAutoReverse(假);
TranslateTransition菜单栏\幻灯片=新的TranslateTransition(持续时间.毫秒(300),菜单栏);
菜单栏(幻灯片)setFromY(35);;
菜单栏滑动。设置玩具(0);
菜单栏滑动。设置循环计数(1);
菜单栏滑动。设置自动翻转(假);
ParallelTransition HideMenu=新的ParallelTransition();
HideMenu.getChildren().addAll(clipPane_幻灯片、菜单栏_幻灯片);
HideMenu.setCycleCount(1);
HideMenu.playFromStart();
fMenuVisible=假;
}
}
});
经过几个小时的搜索后,发现它是自己通过并行程序实现的
root.setOnMouseMoved(新的EventHandler(){
@凌驾
公共无效句柄(MouseeEvent事件){
if((event.getY()35)和&(fMenuVisible)){
TranslateTransition clipPane_幻灯片=新的TranslateTransition(持续时间.毫秒(300),clipPane);
clipPane_Slide.setFromY(35);
clipPane_Slide.setToY(0);
clipPane_幻灯片。设置循环计数(1);
clipPane_Slide.setAutoReverse(假);
TranslateTransition菜单栏\幻灯片=新的TranslateTransition(持续时间.毫秒(300),菜单栏);
菜单栏(幻灯片)setFromY(35);;
菜单栏滑动。设置玩具(0);
菜单栏滑动。设置循环计数(1);
菜单栏滑动。设置自动翻转(假);
ParallelTransition HideMenu=新的ParallelTransition();
HideMenu.getChildren().addAll(clipPane_幻灯片、菜单栏_幻灯片);
HideMenu.setCycleCount(1);
HideMenu.playFromStart();
fMenuVisible=假;
}
}
});
试着消化这些,试着消化这些,试着消化这些,试着消化这些,我正在尝试实现这一点。clipPane是什么?你好,我的朋友。窗格c
root.setOnMouseMoved(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (event.getY() < 25){
menuBar.setVisible(true);
root.setTopAnchor(clipPane, 35.0);
} else {
if (menuBar.isVisible()) {
menuBar.setVisible(false);
}
if (menuFile.isShowing()) {
try {
Robot bot = new Robot();
bot.mousePress(InputEvent.BUTTON1_MASK);
bot.mouseRelease(InputEvent.BUTTON1_MASK);
} catch (AWTException ex) {
}
}
root.setTopAnchor(clipPane, 0.0);
}
}
});
root.setOnMouseMoved(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if ((event.getY() <= 35) && (!fMenuVisible)) {
TranslateTransition clipPane_Slide = new TranslateTransition(Duration.millis(300), clipPane);
clipPane_Slide.setFromY(0);
clipPane_Slide.setToY(35);
clipPane_Slide.setCycleCount(1);
clipPane_Slide.setAutoReverse(false);
TranslateTransition menuBar_Slide = new TranslateTransition(Duration.millis(300), menuBar);
menuBar_Slide.setFromY(0);
menuBar_Slide.setToY(35);
menuBar_Slide.setCycleCount(1);
menuBar_Slide.setAutoReverse(false);
ParallelTransition ShowMenu = new ParallelTransition();
ShowMenu.getChildren().addAll(clipPane_Slide, menuBar_Slide);
ShowMenu.setCycleCount(1);
ShowMenu.playFromStart();
fMenuVisible = true;
} else if ((event.getY() > 35) && (fMenuVisible)) {
TranslateTransition clipPane_Slide = new TranslateTransition(Duration.millis(300), clipPane);
clipPane_Slide.setFromY(35);
clipPane_Slide.setToY(0);
clipPane_Slide.setCycleCount(1);
clipPane_Slide.setAutoReverse(false);
TranslateTransition menuBar_Slide = new TranslateTransition(Duration.millis(300), menuBar);
menuBar_Slide.setFromY(35);
menuBar_Slide.setToY(0);
menuBar_Slide.setCycleCount(1);
menuBar_Slide.setAutoReverse(false);
ParallelTransition HideMenu = new ParallelTransition();
HideMenu.getChildren().addAll(clipPane_Slide, menuBar_Slide);
HideMenu.setCycleCount(1);
HideMenu.playFromStart();
fMenuVisible = false;
}
}
});