2014-11-08 3 views
1

휴대용 데스크톱 응용 프로그램을 개발 중이며 UI에서 특정 이미지를 사용하고 있습니다. 내 응용 프로그램의 절대 경로는 다음과 같습니다. C :/Users/JP/Documents/EOL/Collection/DataCollection/src/application/특정 이미지가 상대 경로로로드되지 않습니다. JavaFX

위의 지정된 응용 프로그램 폴더에 fxml 및 main class 소스 파일이 있고 " images "폴더에 저장합니다. 모두 .jpg 파일입니다. 상대 경로를 사용하여 fxml 파일에서이 파일을 참조 할 때 1은로드되고 다른 두 경로는로드되지 않습니다.

로드하는 데 실패한 특정 파일 하나가 왜로드되는지 알 수 없습니다.

내 fxml의 세 위치에서 한 파일을 참조 할 때 제대로 작동합니다. 그리고 절대 경로로 3 개의 다른 이미지를 모두 참조하면 잘 동작합니다. 하지만 난 단지 몇 파일에 관해서 상대 경로 문제를 이해하지 못합니다. 아무도 이것으로 나를 도울 수 있습니까?

'@'을 'file :'로 바꾸려고했으나 도움이되지 않았습니다.

<ImageView fitHeight="333.0" fitWidth="450.0" opacity="0.27"> 
    <image> 
     <Image url="@images/ht.jpg" /> 
    </image> 
</ImageView> 
<ImageView fitHeight="70.0" fitWidth="68.0" layoutX="5.0" layoutY="7.0"> 
    <image> 
     <Image url="@images/eol.jpg" /> 
    </image> 
</ImageView> 
<ImageView fitHeight="103.0" fitWidth="162.0" layoutX="78.0" layoutY="-9.0" preserveRatio="true"> 
    <image> 
     <Image url="@images/eol2.gif" /> 
    </image> 
</ImageView> 
+0

Scenic Builder 2.0을 사용하고 있습니까? 그렇다면 fxml 파일을 열면 세 개의 이미지가 보입니까? 그렇지 않다면 Inspector 탭에서 Properties-> Image를로드 해보십시오. 저장하고 닫은 다음 앱을 다시 실행하십시오. –

+0

예. 나는 씬 빌더 2.0을 사용하고 있습니다. 장면 제작자의 모든 이미지를 볼 수 있지만 Java 코드에서 실행할 때 그 중 하나가 보이지 않습니다. 검사기 탭에서도로드를 시도했습니다. 불운! –

+0

코드를 보지 않고도 무슨 일이 일어나고 있는지 정말로 알 수 없습니다. 애플리케이션을 실행하는 동안 [Scenic View] (http://fxexperience.com/scenic-view/)를 사용하여 시도해 볼 수 있으며 'ImageView'노드 아래에있는 것을 볼 수 있습니다. 그 (것)들을 위해 당신은 어떤 용기를 사용하고 있습니까? 어쩌면 그들이로드되어 있지만 볼 수있는 장면 뒤에 보이는 것 뒤에 ... –

답변

0

답변을 찾았습니다. 상대적으로 프로젝트의 전체 클래스 경로를 상대 URL에 포함시켜야합니다.

예를 들어

내 FXML 파일에 다음 패키지에 있다면 :

com/dscalzi/testproject/ui/MyFXML.fxml 

내 이미지 다음 패키지이었다

com/dscalzi/testproject/ui/assets/myimage.png 

는 적절한 상대 경로는 다음과 같습니다

<Image url="@/com/dscalzi/testproject/ui/assets/myimage.png" /> 

fxml은 전체 클래스 경로를 사용하여 이미지를로드하는 것으로 보입니다.

관련 문제