UDN-企业互联网技术人气社区

板块导航

浏览  : 1120
回复  : 0

[讨论交流] 利用JavaFx开发RIA桌面应用-改变stage的标题栏的图标

[复制链接]
白青青的头像 楼主
发表于 2016-10-31 10:06:07 | 显示全部楼层 |阅读模式
  1.背景

  想给软件添加一个图标,同时软件的窗体是可变动的,接下来就介绍下给可变动窗体添加图标方式。

  2.操作

  添加图标的操作是很简单的,只需给start方法里面的stage新增一个属性即可:
  1. @Override
  2. public void start(Stage primaryStage){

  3.    Group root = new Group();
  4.    Scene scene = new Scene(root,Constant.SOFTWARE_INITIAL_LENGTH,Constant.SOFTWARE_INITIAL_WIDTH, Color.WHITE);

  5.    primaryStage.setTitle(Constant.SOFTWARE_TITLE);  
  6.    primaryStage.getIcons().add(ImageUtil.getImage("/image/tools.png"));
  7.    primaryStage.setScene(scene);
  8.    primaryStage.show();
  9. }
复制代码

  如上,仅添加primaryStage.getIcons().add(ImageUtil.getImage(“/image/tools.png”));这行代码即可。

  主要利用了两个方法,一个是stage自己的getIcons()方法,如下:
5.png
  另一个是ObservableList接口的实现方法add(Image image):
4.png
  展示效果如下,软件标题栏中多了一个图标:
3.png
  通常通过添加如上方法即可完成图标添加,倘若你出现了变化窗体大小图标消失的情况请接着往下看,若没有则忽略,如下:
2.png
  这种情况应该如何处理呢?我尝试可行的方法为给这个stage添加窗体大小监听器,新建监听器类:
  1. public class StageChangeListener implements ChangeListener<Number> {

  2.     Stage stage;

  3.     public StageChangeListener(Stage stage){
  4.         this.stage = stage;
  5.     }

  6.     public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {

  7.         stage.getIcons().add(ImageUtil.getImage("/image/tools.png"));
  8.     }
  9. }
复制代码

  给stage添加监听:
  1. primaryStage.widthProperty().addListener(new StageChangeListener(primaryStage));
复制代码

  添加监听后,运行软件,改变窗体大小,图标显示正常。
1.png

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部