source

JavaFX 응용 프로그램아이콘

factcode 2022. 8. 14. 11:56
반응형

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은 소스 파일과 같은 폴더 아래에 있습니다.

Stack Overflow Icon 아이콘을 설정합니다.

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

출력 스크렌샷

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 dir에 있고 그렇지 않으면 '/'을 입력해야 합니다.

src 디렉토리에 image.icons라는 새로운 패키지를 생성하여 .png 이미지를 이동하는 것에 대해 어떻게 생각하십니까?필요한 것은 다음과 같습니다.

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

이 솔루션은 저에게 완벽하게 작동하지만, 아직 정확한지 잘 모르겠습니다(처음부터).

stage.getIcons().add(new Image(ClassLoader.getSystemResourceAsStream("images/icon.png")));

이미지 폴더가 리소스 폴더에 있어야 합니다.

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

이 방법을 사용하여 크기가 다른 아이콘을 두 개 이상 추가할 수 있습니다.이미지는 같은 이미지의 크기가 서로 달라야 하며 최적의 크기가 선택됩니다. eg. 16x16, 32,32

이 코드 라인을 사용하면 프로그램에 아이콘을 쉽게 추가할 수 있습니다.

stage.getIcons().add("이미지 경로");

stage.getIcons().add(new Image("/images/logo_only.png"));

src 폴더에 이미지 폴더를 만들어 이미지를 가져오는 것이 좋습니다.

나는 이것을 응용 프로그램에 사용했다.

Image icon = new Image(getClass().getResourceAsStream("icon.png"));
window.getIcons().add(icon);

여기 창문이 무대입니다.

jar 파일을 실행하면 마이클 베리가 지정한 코드가 제목 표시줄과 태스크바에 있는 아이콘을 변경합니다.바로 가기 아이콘은 변경할 수 없습니다.

com으로 컴파일된 네이티브 프로그램을 실행하는 경우.zenjava, 프로그램 아이콘에 링크를 추가해야 합니다.

<plugin>
    <groupId>com.zenjava</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>8.8.3</version>
    <configuration>
    ...
        <bundleArguments>
            <icon>${project.basedir}/src/main/resources/images/filename.ico</icon>
        </bundleArguments>
    </configuration>
</plugin>

숏컷과 태스크바에 아이콘이 추가됩니다.

실행 시 아이콘 전환:

여기에 있는 응답 외에, 처음 프로그램에 아이콘을 할당한 후에는 스테이지에 새 아이콘을 추가하는 것만으로 아이콘을 전환할 수 없다는 것을 알게 되었습니다(앱의 아이콘을 on/off 활성화/비활성화에서 전환할 필요가 있는 경우 도움이 됩니다).

런타임 중에 새 아이콘을 설정하려면 새 아이콘을 추가하기 전에 getIcons().remove(0)를 사용합니다. 여기서 0은 다음과 같이 재정의할 아이콘의 색인입니다.

//Setting icon by first time (You can do this on your start method).
stage.getIcons().add(new Image(getClass().getResourceAsStream("enabled.png")));

//Overriding app icon with a new status (This can be in another method)
stage.getIcons().remove(0);
stage.getIcons().add(new Image(getClass().getResourceAsStream("disabled.png")));

다른 메서드 또는 클래스에서 스테이지에 액세스하려면 메인 클래스에 스테이지를 위한 새로운 스태틱필드를 생성하여 앱 내 어디에서나 액세스할 수 있는 스태틱메서드에 캡슐화함으로써 start() 메서드 외부에서 액세스할 수 있습니다.

public class MainApp extends Application {
    private static Stage stage;
    public static Stage getStage() { return stage; }

    @Override public void start(Stage primaryStage) {
        stage = primaryStage
        stage.getIcons().add(new Image(getClass().getResourceAsStream("enabled.png")));
    }
}

public class AnotherClass {
    public void setStageTitle(String newTitle) {
        MainApp.getStage().setTitle(newTitle);
        MainApp.getStage().getIcons().remove(0);
        MainApp.getStage().getIcons().add(new Image(getClass().getResourceAsStream("disabled.png")));
    }
}

만약 당신이 가지고 있다면Invalid URL or resource not found폴더에 .

JavaFX의 제목 표시줄에 사용자 고유의 아이콘을 삽입하는 또 다른 쉬운 방법은 다음 방법을 사용하여 이미지를 프라이머리 단계에 추가하는 것입니다.

Image ico = new Image("resources/images/iconLogo.png");
stage.getIcons().add(ico);

javafx.scene.image를 Import합니다.이미지(netbeans와 같은 ide를 사용하는 경우 이 작업은 자동으로 수행되어야 합니다).

이렇게 해봤더니 작동하더라고요.

stage.getIcons().add(new Image(getClass().getResourceAsStream("../images/icon.png")));

언급URL : https://stackoverflow.com/questions/10121991/javafx-application-icon

반응형