1. 程式人生 > >利用JavaFx開發RIA桌面應用-改變stage的標題欄的圖示

利用JavaFx開發RIA桌面應用-改變stage的標題欄的圖示

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));

新增監聽後,執行軟體,改變窗體大小,圖示顯示正常。

這裡寫圖片描述

相關文章: