1

だから私はトレイメニューを試していて、ラインがあります.

final TrayIcon trayIcon = new TrayIcon(createImage("duke.jpg", "tray icon"));

メソッド createImage は

protected static Image createImage(String path, String description) {
    URL imageURL = TrayIconDemo.class.getResource(path);

    if (imageURL == null) {
        System.err.println("Resource not found: " + path);
        return null;
    } else {
        return (new ImageIcon(imageURL, description)).getImage();
    }
}

プログラムを実行すると、次のエラーが表示されます

Resource not found: duke.jpg
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: creating TrayIcon with null Image
    at java.awt.TrayIcon.<init>(Unknown Source)
    at misc.TrayIconDemo.createAndShowGUI(TrayIconDemo.java:76)
    at misc.TrayIconDemo.access$0(TrayIconDemo.java:68)
    at misc.TrayIconDemo$1.run(TrayIconDemo.java:63)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

これは、画像がどこにあるかを示す私のフォルダーの写真です。

http://i.stack.imgur.com/80tFY.png

このhttp://www.oracle.com/technetwork/articles/javase/systemtray-139788.htmlを見つけたことを述べたいと思います。画像があるかどうかに関係なく機能します。また、画像は.javaが表示されるフォルダーではなく、ソースフォルダーに配置する必要があったため、質問が関連している元のコードのためにそこにある必要があると想定しています。したがって、システム トレイに関するヘルプが必要な場合は、リンクを確認してください。

4

2 に答える 2

0

最も簡単な方法はSystem.out.println(new File(".").getAbsolutePath())、ルート パスと見なされるものを見つけてから、ファイルへの実際のパスを調整することです。

webapp (サーブレットベース) と Java SE アプリの違いがあるため、これを使用します。

于 2013-06-25T19:43:37.847 に答える