开发者

Creating a desktop icon using JWS JNLP for a JavaFX app

开发者 https://www.devze.com 2022-12-16 10:57 出处:网络
I am trying to get a custom destop icon to be displayed for my app but for some reason no matter what I do the same default java icon shows up. I have tried everything I can think of and gone and comp

I am trying to get a custom destop icon to be displayed for my app but for some reason no matter what I do the same default java icon shows up. I have tried everything I can think of and gone and compared my jnlp file with others whose icons seem to work ok. According to everything I have read the following should work fine. But of course, it doesn't:

<information>
    <title>MikesApp</title>
    <vendor>Mike</vendor>
    <homepage href="http://www.mikesapp.com/"/>
    <descriptio开发者_C百科n>Mikes App.</description>
    <icon kind="shortcut" href="res/icon64x64.png" width="64" height="64"/>
    <offline-allowed/>
    <shortcut>
        <desktop/>
    </shortcut>
</information>

Any ideas would be greatly appreciated.


I would try the following, in order:

  1. Create an icon of 32x32 in size and add it as an additional <icon kind="shortcut".... The spec says that size is used for desktop icons.
  2. Use your 64x64 icon as the "default". For example, your new <icon> elements would be:

    <icon href="res/icon64x64.png" width="64" height="64"/>
    <icon kind="shortcut" href="res/icon32x32.png" width="32" height="32"/>
    <icon kind="shortcut" href="res/icon64x64.png" width="64" height="64"/>
    
  3. Remember that your images are accessed relative to your codebase attribute in your jnlp xml element

  4. If none of those work, you are welcome to compare your JNLP to one of mine that works.

I realize that this JNLP stuff is kind of a pain. Hope one of these work for you.


I suppose the problem in your case is the missing CODEBASE attribute. See one working snippet:

<?xml version="1.0"?>
<jnlp spec="1.5+" 
      codebase="http://www.sweethome3d.com/" 
      href="SweetHome3D.jnlp">
  <information>
    <title>Sweet Home 3D</title>
    <vendor>eTeks</vendor>
    <homepage href="http://www.sweethome3d.com/"/>
    <description>Sweet Home 3D</description>
    <description kind="short">Arrange the furniture of your house</description>
    <icon href="SweetHome3DIcon.gif"/>
    <icon kind="splash" href="SweetHome3DSplashScreen.jpg"/>
    <offline-allowed/>
    <shortcut online="false">
      <desktop/>
      <menu submenu="eTeks Sweet Home 3D"/>
    </shortcut>
    <association extensions="sh3d sh3l sh3f sh3t sh3p" 
                 mime-type="application/SweetHome3D"/>
  </information>


We had the same problem. It worked fine initially then over time (a few Java updates?) it stopped working. When I got around to troubleshooting I discovered that even though javaws sends that it is gzip capable, our gzip response was not handled. I turned gzip off for these icons and it worked fine once again.


I don't have a specific answer I'm afraid, but Project MaiTai is an open source application written in JavaFX, and that has a custom desktop icon.

If you haven't done so already, maybe checking the JNLP code for MaiTai would give you some pointers.


There's an example of how to do this in the JavaFX in Action book, if you have access to that. You need to make sure the res/icon64x64.png file is actually downloadable from whatever site the app is hosted on, relative to the JNLP's location. Try loading it directly in a browser to ensure its available/valid.

0

精彩评论

暂无评论...
验证码 换一张
取 消