2016-10-25 5 views
1

ボタンをクリックしてImageViewコンポーネントのイメージを変更しようとしています。私はそれがローカルイメージであることが必要です。私はパスのエラーを取得し続け、私はImageIconを使用してイメージに変換することはできません。これを行う簡単な方法はありませんか?JavaFXシーンビルダを使用してコード内のImageViewイメージを変更する

プロジェクトのレイアウトはすべて、このEclipseのスクリーンショットで見ることができ
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

私を助けてくれてありがとう。私は両方の答えを試してもまだ動作していない、私は多分間違ったフォルダに画像があると思う? –

関連する問題