2016-08-28 10 views
4

등으로부터 윈도우 작업 표시 줄에 정보를 보낼 수있는 방법은 작업 표시 줄의 아이콘은 다음과 같이 보여줍니다는 자바 오 자바 FX

windows taskbar

난의 진행 상황을 보여 드리고자합니다 그런 작업 표시 줄에 내 프로그램. 어떻게하면 javaFX를 사용하여이 작업을 수행 할 수 있습니까?

+0

어쩌면 도움 . –

+1

[Windows 7 작업 표시 줄 진행 표시 줄 (Java)] 가능한 복제본 (0120-336-005) – brian

답변

3

희망이 방법은 [`SystemTray`] (https://docs.oracle.com/javase/8/docs/api/java/awt/SystemTray.html) 클래스를 통해

package so; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStream; 

import javax.imageio.ImageIO; 

import javafx.application.Application; 
import javafx.embed.swing.SwingFXUtils; 
import javafx.scene.Scene; 
import javafx.scene.SnapshotParameters; 
import javafx.scene.control.Button; 
import javafx.scene.control.ProgressBar; 
import javafx.scene.image.Image; 
import javafx.scene.image.WritableImage; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 

public class JavaFXExample extends Application { 

    public static void main(String[] args) { 
     launch(args); 
    } 

    private static final int ICONSIZE = 16; 

    ProgressBar bar = new ProgressBar(0.2d); 

    @Override 
    public void start(Stage primaryStage) { 
     primaryStage.setTitle("change taskbar icon"); 
     Button btn = new Button(); 
     btn.setText("click me several times while looking at task bar"); 

     bar.setMaxWidth(ICONSIZE); 

     btn.setOnAction(ev -> { 

      bar.setProgress(bar.getProgress() + 0.1d); 

      WritableImage image = new WritableImage(ICONSIZE, ICONSIZE); 

      bar.snapshot(new SnapshotParameters(), image); 

      File file; 
      try { 
       file = File.createTempFile("temp-image", ".png"); 
      } catch (IOException e1) { 
       e1.printStackTrace(); 
       return; 
      } 

      try { 
       ImageIO.write(SwingFXUtils.fromFXImage(image, null), "png", file); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

      InputStream is; 
      try { 
       is = new FileInputStream(file); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
       return; 
      } 

      primaryStage.getIcons().clear(); 
      primaryStage.getIcons().add(new Image(is)); 

      try { 
       is.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     }); 

     VBox box = new VBox(bar, btn); 
     primaryStage.setScene(new Scene(box, 300, 250)); 
     primaryStage.show(); 

    } 
} 
+0

놀랍지 만, 확실히 창 ​​속성을 사용하지 않는, 당신은 트레이 아이콘으로 진행률 표시 줄을 설정하고, 이건 정말 대단 했어! –