2016-07-03 2 views
1

응용 프로그램을 열어도 문제가 없지만 아이콘을 설정하는 데 문제가 있습니다. 경로를 지정하는 아이콘이 거기에 있으며, 해당 디렉토리의 다른 상상력으로 변경하면 아이콘이 9/10 회 표시되지만이 이미지는 표시되지 않습니다. 그것의 장소에 항상 물음표가 있습니다. 따라서 내가 아는 또 다른 파일 (예 : 손상되지 않은 파일) 에서조차 어떻게 그렇게 드물게 보이지 않는지? 나는 모든 솔루션 here을 시도JavaFX 응용 프로그램 아이콘이 9/10 번 표시되지 않습니다.

Directory structure

: 아래

는 Main.java에 관한 프로젝트 디렉토리 구조/IMG/MyApplication.java 아래
package MyApp; 

import MyApp.Variables.Constants; 

import javafx.application.Application; 
import javafx.application.Platform; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.scene.image.Image; 
import javafx.stage.Stage; 

public class Main extends Application { 

    @Override 
    public void start(Stage primaryStage) throws Exception { 
     Parent root = FXMLLoader.load(getClass().getResource("Forms/FormMain.fxml")); 

     primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("/img/appicon.png"))); 
     primaryStage.setTitle("MyApp " + Constants.VERSION_NAME + " (" + Constants.RELEASE_ID + ")"); 
     primaryStage.setScene(new Scene(root, 1000, 800)); 
     primaryStage.show(); 
    } 

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

의 코드입니다 그러나 아무것도 나의 문제를 고치지 않았다.

내 보낸 JAR 파일에서 문제가 지속 되더라도 IDE의 IDEA 16.04에서 실행됩니다.

+0

사용 [새로운 이미지 ("파일 : /img/appicon.png")]가 작동하는지 확인하십시오. 또한 http://download.java.net/jdk8/jfxdocs/javafx/scene/image/Image.html에서 jar 파일을 확인하십시오. [new Image (getClass(). getResourceAsStream ("/ img/appicon. png ");] – GOXR3PLUS

+0

나는 작동하지 않을까 걱정됩니다. 문서를 살펴 봤지만 실제로 얻을 수있는 것이 무엇인지 잘 모르겠습니다. 대신 다양한 생성자를 사용하여 스트림을 전달했습니다. 백그라운드 로딩, 아무 작업도하지 않음 –

+0

항아리로 내보낼 때 새 이미지 (getClass(). getResourceAsStream ("/ img/appicon.png");)를 사용하여 스트림으로 가져와야합니다. – GOXR3PLUS

답변

3

디스크에서 데이터로드 시간이 오래 걸리므로 개체가 생성되는 동안 아이콘로드를 시작할 수 있습니다. 생성자에 배치하고 인스턴스 멤버에 저장합니다. 일반적으로 각 플랫폼마다 고유 한 크기 (링크 등)가 필요하기 때문에 하나 이상의 아이콘을 추가해야합니다.

package MyApp; 

import MyApp.Variables.Constants; 

import javafx.application.Application; 
import javafx.application.Platform; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.scene.image.Image; 
import javafx.stage.Stage; 

public class Main extends Application { 

    private Image icon; 

    public Main() { 
     icon = new Image(Main.class.getResource("/img/appicon.png").toExternalForm()); 
    } 

    @Override 
    public void start(Stage primaryStage) throws Exception { 
     Parent root = FXMLLoader.load(getClass().getResource("Forms/FormMain.fxml")); 

     primaryStage.getIcons().add(icon); 
     primaryStage.setTitle("MyApp " + Constants.VERSION_NAME + " (" + Constants.RELEASE_ID + ")"); 
     primaryStage.setScene(new Scene(root, 1000, 800)); 
     primaryStage.show(); 
    } 

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

내 아이콘이되었다 : enter image description here 및 넷빈즈에서 응용 프로그램의 구조는 다음과 같습니다

enter image description here

및 실행중인 응용 프로그램이 그 모양 :

enter image description here

+0

getResource는 문자열 만 허용하며 매개 변수를 사용하지 않습니다. –

+0

미안하지만, 문자열에 대한 잘못된 위치. – NwDev

+0

편집을하는 동안 시도해 봤지만 여전히 getResource가 null 인 NullPointerException 때문에 네이티브 코드의 InvocationTargetException으로 인해 응용 프로그램 인스턴스 등을 만들 수 없습니다. 처음에 전체 중지를 제거하면 getResource가 더 이상 null이 아니며 응용 프로그램이 시작되지만 아이콘은 여전히 ​​표시되지 않습니다. –

관련 문제