2016-07-05 12 views
0

からのセットImageViewの私はSceneBuilderで見たよう(あなたがの.jar としてプロジェクトをエクスポートして、あなたは瓶の中にイメージを持っている場合、そのイメージは動作しませんが)あなたがImageViewのためのグラフィックを設定することができます。JavaFXの方法SceneBuilder

1)私はにいくつかのfxmlボタンの画像をSceneBuilderで設定したいと思いますが、それについては何も見つかりません。

2)あなたは私がgetClass().getResource("image.png");で何.fxmlを行う方法についての情報を提供する場合もそれが便利になりますので、私は手動でJavaファイルでこれを行うにはしていません。

編集:ファビアンから

両方の答えとジョンVerneeですが、質問1と2のそれぞれ1正しいですが、私は一つだけを選ぶことができます。

リソースフォルダの構造:あなたはこのようにFXMLでImageViewのURLを設定することができ

enter image description here

+1

プロジェクトを「.jar」としてエクスポートした場合、「画像は機能しません」と言われますが、そうは思いません。このように壊れたjarファイルに 'jar tvf'の出力とFXMLファイルを提供できますか? – jewelsea

+0

私はあなたにも "同じ"部分を伝えることができます。そして、FXMLから設定することで、そこにあるイメージでうまく動作するテスト用のjarファイルを作成しました。 –

+0

@ jewelsea fxmlから設定する方法はわかりません。私はSceneBuilderから設定しています。画像はjar.Thatsから外に出ていなければなりません。私はそれをjarの中に入れて再び作業することができますか? – GOXR3PLUS

答えて

2

あなたは階層ビューでButtonライブラリから(この場合ImageViewで)使いたいgraphicノードをドラッグします。そこにドロップすると、Buttonの子としてgraphicノードが表示されます。

これは相対パスを文書化するスイッチを選択することによって、あなたは@から始まる画像のURLを指定することができますImageViewのイメージプロパティの横にギアボタンを使用することにより、この

... 
<Button mnemonicParsing="false" text="Button"> 
    <graphic> 
     <ImageView fitHeight="150.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true" /> 
    </graphic> 
</Button> 
... 

などのFXMLになります。 URL @image.pngの場合はimage.pngと入力してください。 fxmlを画像に対して正しい場所に保存すると、SceneBuilderに画像が表示されます。

+0

Perfectoは答えに感謝します。 – GOXR3PLUS

+0

もう1つthink.. fitHeightとfitWidthを元の幅を保つために0に変更する必要がありますが、ドキュメントの相対パスとクラスパスの相対パスの違いは何ですか? – GOXR3PLUS

+1

@ GoXr3Plus:イメージが元のサイズを保持する必要がある場合は、 'fitHeight'と' fitWidth'は必要ありません。ドキュメントの相対パス(fxmlで '@ 'で始まる)は、fxmlの場所に関連しています。クラスパスの相対パスは通常、パッケージルート(fxmlの'/'で始まる)からの相対パスです。その情報の一部は、このドキュメントのどこかに記載する必要があります。https://docs.oracle.com/javase/8/javafx/api/javafx/fxml/doc-files/introduction_to_fxml.html – fabian

1

<ImageView> 
    <image> 
     <Image url="@my_image.png" /> 
    </image> 
</ImageView> 

それはFXMLファイルと同じフォルダになります画像のために。


あなたはFXMLからそれを参照することでButtonのグラフィックを設定できます

<!-- Define some ImageView --> 
<fx:define> 
    <ImageView fx:id="my_image"> 
     <image> 
      <Image url="@my_image.png" /> 
     </image> 
    </ImageView> 
</fx:define> 

<!-- Reference it here --> 
<Button graphic="$my_image"/> 

私はjavafx-jar-pluginを使用して、日食のためのapache mavenのプラグインを使用して、私のjarファイルを構築しています。

<build> 
    <plugins> 
     <plugin> 
      <groupId>com.zenjava</groupId> 
      <artifactId>javafx-maven-plugin</artifactId> 
      <version>8.5.0</version> 
      <configuration> 
       <mainClass>application.MainFXML</mainClass> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

私はFXMLファイルとsrc/main/resourcesの下で同じフォルダに画像を入れているので、彼ら:

あなたが前にMavenで働いてきた場合は、pom.xmlにこのプラグインを使用することができます瓶に入れる。

jfx:jarゴールを使用してMavenビルドを実行します。 SceneBuilderで

+0

SceneBuilder経由でボタン用の画像を設定することはできますか?2)resources/imagesという名前のソースフォルダにいくつかの画像があります。ファイルをjx形式でエクスポートしてfxmlに書き込む方法は? resources/images/image.png "? – GOXR3PLUS

+0

@ GoXr3Plus SceneBuilderでそれを見つけることができませんでしたが、FXMLで動作するようになりました:)答えを更新しました。 –

+1

@ GoXr3Plusこれを書く方法については、 '' '@' ''でFXMLファイルと同じフォルダを探し始めます。だから、あなたは_相対的な経路が必要です。例えば。;あなたのFXMLファイルが '' resources/fxml/my_fxml.fxml'''にあり、 '' resources/images/my_image.png'''にあるイメージの場合は、 '' @ ../images/my_image.png'''。 –

関連する問題