微信扫一扫

028-83195727 , 15928970361
business@forhy.com

利用JavaFx开发RIA桌面应用-改变stage的标题栏的图标

桌面应用,javafx,ria2016-10-28

转载请注明来源-作者@loongshawn:http://blog.csdn.net/loongshawn/article/details/52954903

1.背景

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

2.操作

添加图标的操作是很简单的,只需给start方法里面的stage新增一个属性即可:

@Override
public void start(Stage primaryStage){

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

   primaryStage.setTitle(Constant.SOFTWARE_TITLE);  
   primaryStage.getIcons().add(ImageUtil.getImage("/image/tools.png"));
   primaryStage.setScene(scene);
   primaryStage.show();
}

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

主要利用了两个方法,一个是stage自己的getIcons()方法,如下:

另一个是ObservableList接口的实现方法add(Image image):

展示效果如下,软件标题栏中多了一个图标:

通常通过添加如上方法即可完成图标添加,倘若你出现了变化窗体大小图标消失的情况请接着往下看,若没有则忽略,如下:

这种情况应该如何处理呢?我尝试可行的方法为给这个stage添加窗体大小监听器,新建监听器类:

public class StageChangeListener implements ChangeListener<Number> {

    Stage stage;

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

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

        stage.getIcons().add(ImageUtil.getImage("/image/tools.png"));
    }
}

给stage添加监听:

primaryStage.widthProperty().addListener(new StageChangeListener(primaryStage));

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