JavaFX(二)自定义窗口标题栏

时间:2021-06-06 17:01:55
1.问题场景

  PC客户端登录界面仿QQ,上边显示图片,下边显示输入框和登录按钮。而JavaFX默认的窗口,不满足需求。

2.解决思路

  隐藏窗口默认的标题栏,使用创建label对象,使用css将按钮图片替换到label对象中进行布局,充当按钮。

3.代码实现
   代码片段:

    stage.initStyle(StageStyle.TRANSPARENT);//隐藏默认标题栏

  代码片段:  

    Label close = new Label();
    close.setTooltip(new Tooltip("关闭"));
    close.setPrefWidth(33);
    close.setPrefHeight(26);
    close.setId("winClose");//winClose css样式Id
    close.setOnMouseClicked(关闭事件);//此处自行定义事件处理器

  css代码片段: 

    #winClose {
      -fx-cursor:hand;
    }

    #winClose{
      -fx-background-image:url("/com/bb/winClose_0.png");
      -fx-background-repeat:no-repeat;
    }

    #winClose:hover {
      -fx-background-image:url("/com/bb/winClose_1.png");
    }

    #winClose:pressed {
      -fx-background-image:url("/com/bb/winClose_2.png");
    }

  JavaFX有很多布局管理的对象,可以轻松对组件进行布局。笔者在项目中使用的是AnchorPane对象。