11

javaFX ステージでアイコンを設定する方法を知りたかったのです。この方法を見つけましたが、正しく機能しませんでした。

  stage.getIcons().add(new Image(iconImagePath));

stage は javafx.stage.Stage のインスタンスであり、javafx.scene.image.Image をインポートしました。これは私たちが受け取る例外です:

無効な URL: 無効な URL またはリソースが見つかりません

また、iconImagePath に問題はなく、その値は「G:/test.jpg」であり、test という名前の G ドライブに jpg ファイルがあります。さらに、ImageIO を使用して同じ URL を読み取ると、簡単に読み取ることができます。

4

12 に答える 12

18
stage.getIcons().add(new Image(getClass().getResourceAsStream("bal.png")));

この例は機能します。ソース .java ファイルと同じフォルダー/パッケージにアイコンを配置しました。

ディレクトリ構造

于 2013-11-20T11:32:32.677 に答える
2

使用する

stage.getIcons().add(new Image(("file:logo.png")));

画像 logo.png をプロジェクトのルート ( src と同じディレクトリ) に配置します。

于 2013-11-20T11:30:37.350 に答える
2

最良の方法:

stage.getIcons().add(new Image(getClass().getResource(IconImagePath).toExternalForm()));
于 2015-11-22T13:35:28.090 に答える
1

32x32アイコンは解像度または解像度である必要があることを忘れないでください16x16。そうでない場合、機能しません。

于 2015-06-29T14:31:27.440 に答える
1
// Set the icon
stage.getIcons().add(new Image(getClass().getResourceAsStream("penguin.png")));

私は同じ問題に直面しました。私はネットビーンズを使用しました。他のIDEでフォルダ構造が違うのかはわかりませんが、 /build/classes/(JavaFXクラスファイルを含むパッケージ)に写真を入れなければなりませんでした。これは、src フォルダーに入らないことを意味します。

于 2016-04-26T17:13:38.860 に答える
1

これはまさにあなたが必要としていた作業コードです:

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
 *
 * @author Manikant gautam
 * This is a beginner's sample application
 * using JAVAFX
 * 
*/

public class Helloworld extends Application {

    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                System.out.println("Hello World!");
            }
        });

        StackPane root = new StackPane();
        root.getChildren().add(btn);

        Scene scene = new Scene(root, 300, 250);
        // Set Icon From Here.
        primaryStage.getIcons().add(
            new Image("/resource/graphics/app_logo.png"));
        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }


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

ステートメントごとにアイコンを設定します。

primaryStage.getIcons().add(new Image("/resource/graphics/app_logo.png"));
于 2015-12-30T08:44:34.463 に答える
0

これは私がやったことであり、うまくいきます。画像はリソース フォルダーのルートにあります。

stage.getIcons().add(new Image("/ubuntu-mini.png"));

私はJavaFX 8を使用しています

于 2015-02-16T21:20:59.243 に答える
-1
public class Main extends Application
{
    private static final Logger LOGGER = Logger.getLogger(Main.class);

    @Override
    public void start(Stage primaryStage)
        {
            try
                {
                    // BorderPane root = new BorderPane();
                    BorderPane root = (BorderPane) FXMLLoader
                            .load(getClass().getResource("/org/geeksynergy/view/layout/FrontPageBorder.fxml"));
                    root.setAccessibleText("good");

                    Scene scene = new Scene(root, 400, 400);
                    scene.getStylesheets().add(getClass()
                            .getResource("/org/geeksynergy/view/cssstyle/application.css").toExternalForm());
                    primaryStage.setScene(scene);
                    primaryStage.setTitle("AiRJuke");
                    primaryStage.getIcons().add(new Image("/org/geeksymergy/resource/images/download.png"));
                    primaryStage.show();
                    AnchorPane personOverview = (AnchorPane) FXMLLoader
                            .load(getClass().getResource("/org/geeksynergy/view/layout/Ui.fxml"));

                    root.setCenter(personOverview);

                    // added this line to save the playlist , when we close
                    // application window
                    Platform.setImplicitExit(false);

                    primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>()
                        {
                            public void handle(WindowEvent event)
                                {
                                    M3UPlayList.defaultSavePlaylist();
                                    Platform.setImplicitExit(true);
                                    primaryStage.hide();
                                }
                        });

                } catch (Exception e)
                {

                    LOGGER.error("Exception while loding application", e);
                }
        }

    public static void main(String[] args)
        {
            launch(args);
        }
}
于 2016-05-25T05:19:12.167 に答える
-1

解決策は次のとおりです。

File f = new File("image.png");
Image ix = new Image(f.toURI().toString());
stage.getIcons().add(ix);
于 2015-02-25T16:21:24.110 に答える