[java] JavaFX 응용 프로그램 아이콘

JavaFX를 사용하여 응용 프로그램 아이콘을 변경할 수 있습니까? 아니면 Swing을 사용하여 수행해야합니까?



답변

스테이지가 “스테이지”이고 파일이 파일 시스템에 있다고 가정합니다.

stage.getIcons().add(new Image("file:icon.png"));

아래 주석에 따라 포함 된 항아리에 싸여 있으면 대신 다음 방법을 사용해야합니다.

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("icon.png")));


답변

나는 이것을 시도했고 그것은 완전히 작동한다. 코드는 다음과 같습니다

stage.getIcons().add(
   new Image(
      <yourclassname>.class.getResourceAsStream( "icon.png" ))); 

icon.png는 소스 파일과 같은 폴더에 있습니다.


답변

초보자를위한 전체 프로그램 :)이 프로그램은 StackOverflowIcon의 아이콘을 설정합니다.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class StackoverflowIcon extends Application {

    @Override
    public void start(Stage stage) {
        StackPane root = new StackPane();
        // set icon
        stage.getIcons().add(new Image("/path/to/stackoverflow.jpg"));
        stage.setTitle("Wow!! Stackoverflow Icon");
        stage.setScene(new Scene(root, 300, 250));
        stage.show();
    }

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

출력 Screnshot

JavaFX 스크린 샷

JavaFX 8 용으로 업데이트

코드를 변경할 필요가 없습니다. 여전히 잘 작동합니다. Java 1.8 (1.8.0_45)에서 테스트 및 검증되었습니다. 경로는 로컬 또는 원격으로 설정 될 수 있으며 둘 다 지원됩니다.

stage.getIcons().add(new Image("/path/to/javaicon.png"));

또는

stage.getIcons().add(new Image("https://example.com/javaicon.png"));

여기에 이미지 설명을 입력하십시오

도움이 되길 바랍니다. 감사!!


답변

fxml로 추가 할 수 있습니다. 무대 수준

<icons>
    <Image url="@../../../my_icon.png"/>
</icons>


답변

이미지 폴더가 있고 그 안에 아이콘이 저장되어 있다면

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/images/comparison.png")));

패키지에서 직접 사용하는 경우 좋은 습관이 아닙니다.

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("comparison.png")));

폴더 구조가 있고 그 안에 아이콘이있는 경우

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("../images/comparison.png")));


답변

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png")));

icon.png가 resources 디렉토리에 있고 ‘/’를 놓는 것을 기억하면 그렇지 않으면 작동하지 않습니다.


답변

src 디렉토리에 새로운 패키지, 즉 image.icons를 만들고 .png 이미지로 옮기는 것에 대해 어떻게 생각하십니까? 작성해야 할 것보다 :

Image image = new Image("/image/icons/nameOfImage.png");
primaryStage.getIcons().add(image);

이 솔루션은 완벽하게 작동하지만 여전히 올바른지 확실하지 않습니다 (여기부터 시작).