2016-10-25 3 views
1

버튼 클릭시 ImageView 구성 요소의 이미지를 변경하려고합니다. 나는 그것이 지역의 이미지가 될 필요가있다. 계속 경로 오류가 발생하고 ImageIcon을 사용하여 이미지로 변환 할 수 없습니다. 이 작업을 수행하는 간단한 방법이 없습니까? JavaFX 장면 빌더를 사용하여 코드에서 ImageView 이미지 변경

package tictactoesimulator_alliebeckman; 

import java.net.URL; 
import java.util.ResourceBundle; 
import javafx.event.ActionEvent; 
import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.scene.control.Button; 
import javafx.scene.control.Label; 
import javafx.scene.image.Image; 
import javafx.scene.image.ImageView; 

/** 
* 
* @author Allie 
*/ 
public class FXMLDocumentController implements Initializable { 

    // my components   
    @FXML 
    public Label lblWinLose; 
    @FXML 
    public Button btnNewGame; 
    @FXML 
    public ImageView ivOne; 

    // Event handle for button click 
    @FXML 
    public void handleButtonAction(ActionEvent event) { 

     // here is where I'm having the issue I have the image file in my src folder 
     // I've tried using a ImageIcon and it wont convert to an Image? 
     // All I need is the image to change to the local image on button click 

     lblWinLose.setText("Clicked"); 
     Image image = new Image("o.png"); 
     ivOne = new ImageView(image); 
    } 

    @Override 
    public void initialize(URL url, ResourceBundle rb) { 

    } 
} 

프로젝트 레이아웃

이 이클립스 스크린 샷에서 볼 수있다 :

질문의 스크린 샷에서

enter image description here

+2

Stack Trace를 게시 할 수 있습니까? –

+0

java.lang.IllegalArgumentException : 잘못된 URL : 잘못된 URL 또는 자원을 찾을 수 없습니다. –

답변

1

, 이미지가 FXMLDocumentController 클래스와 같은 패키지에 있습니다.

Image constructor하면 이미지의 URL의 문자열 버전 기대 사용 : 같은 URL을 얻을 수있는 가장 좋은 방법은 파일 시스템에서 또는에서로드 여부 작동이로 (getClass().getResource(...)를 사용하는 것입니다 jar 파일). (당신이 최고의 /와 리소스 이름을 시작하는 경우 또는 클래스 패스에 상대적으로) getClass().getResource(...)는 현재 클래스를 기준으로 해결할 수 :

Image image = new Image(getClass().getResource("o.png").toExternalForm()); 

및 다음 대신 새로운 ImageView을 만드는 당신이해야

ivOne.setImage(image); 
+0

파일 'o.png'이 실제로 클래스 경로의 루트에 있으면 'new Image ("o.png")'당신이 수동으로하는 일은'Image' 생성자 thx에서 [validateUrl] (http://grepcode.com/file/repo1.maven.org/maven2/net.java.openjfx.backport/openjfx-78-backport/1.8.0-ea-b96.1/javafx /scene/image/Image.java#1059) –

+0

@NicolasFilotto 좋은 지적. 아마 실제로 일어나고있는 것에 관해 더 많은 정보가 필요합니다. –

+0

나를 도와 줘서 고마워. 나는 두 가지 답변을 시도했지만 여전히 작동하지 않습니다. 잘못된 폴더에 이미지가있는 것 같습니다. –

관련 문제