JavaFx自定义窗体

来源:互联网 发布:软件开发模型有哪些 编辑:程序博客网 时间:2024/05/29 18:34
创建窗体的时候会默认的使用系统的的最大最小化关闭的窗体,但是默认的窗体的风格有时不满足需求,需要自定义的窗体来满足我们的需求
步骤一:
在代码中使用  去掉窗体头,
  1. Stage addStage = new Stage();
  2. addStage.initStyle(StageStyle.TRANSPARENT);//隐藏头标题
  1. addStage 是一个新建的dialog的舞台

之后自己在布局中绘制自己想要的一种效果,在顶端布置一个Button,使用css对本button加入效果,
//使用下面的代码会让pane多了一个外边框,并且这样做的时候外边框是有圆角效果的,
  1. #pane_pane{ -fx-background-radius: 3px; -fx-border-color:#95AFA6; -fx-border-width:3px; -fx-border-radius:3px;}

但是问题是,由于给pane设置了外边框,这样的布局在外面显示圆角的时候仍然会有一个方形的尖角存在布局中,所以还要在代码中加入控制:
  1. //设置pane的背景色为透明
  2. scene.setFill(Color.TRANSPARENT);
  3. 或者scene.setFill(null);
  4. 下面就是给button加入默认的图片和鼠标经过的图片,
  5. #btn_close{ -fx-background-image:url("btn_close_normal.png");}#btn_close:hover{ -fx-background-image:url("btn_close_hover.jpg");}




最后就是给button加入一个点击事件,在javafx中即加入一个ActionEvent或者MouseEvent,在方法中,添加关闭dialog的功能代码
  1. // dialogStage.close();关闭本对话框
  2. // Platform.exit();关闭整个系统

之后因为dialog是一个新建的stage,当点击除了dialog页面的部分外,不允许进行操作,除非dialog关闭 后才能对其他页面进行操作
  1. dialogStage.initStyle(StageStyle.TRANSPARENT);
  2. dialogStage.initModality(Modality.WINDOW_MODAL);
  3. dialogStage.initOwner(primaryStage);

使用inintModality和initOwner配合使用,可以实现这一点,但是问题在于,该怎么获取这个Stage的对象,可以将   dialogStage.initOwner(primaryStage);中的参数primaryStage是你要覆盖在哪一个上面的stage,这个 代码意思就是,当前的dialogStage
在PrimaryStage的上面,即实现了窗口不关闭不允许操作。

1 0
原创粉丝点击