Para se livrar do ponto de interrogação cinzento, adicione esta linha de código:
stage.getIcons().add(new Image(getClass().getResourceAsStream("/Images/orca.png")));
No meu ambiente, temos muitos frascos da cápsula executáveis que - dependendo do ambiente ao qual eles se conectam - definem um ícone personalizado e nome programaticamente. Isso é feito chamando javax.swing.JFrame.setIconImage e setTitle na inicialização. Nós temos um painel centralizado onde podemos baixar os jars executáveis (vários 100 diferentes), então, obviamente, eu quero ser capaz de baixar um e executá-lo diretamente. Para isso, existem guias em toda a internet, e eu encontrei a solução normal:
.local / share / applications / java-jar-launcher.desktop:
[Desktop Entry]
Type=Application
Name=Java Application Launcher
Icon=java
Exec=/usr/bin/java -jar %U
Categories=Application;Java
Terminal=False
.local / share / applications / mimeapps.list contém:
application/x-java-archive=java-jar-launcher.desktop
No entanto, isso não respeita o ícone definido pelo aplicativo, há apenas o ponto de interrogação cinza. Ainda mais frustrante, todos os aplicativos e todas as janelas abertas acabam no mesmo local no dock, indistinguíveis uns dos outros, todos denominados Java Application Launcher.
Se eu iniciar um pote baixado de um terminal através do java -jar, tanto o ícone como o nome programado programaticamente estarão visíveis no píer, separando os diferentes aplicativos uns dos outros.
Como posso fazer com que os jars sejam ativados automaticamente e também preservar o ícone e o nome? Não consigo criar 100s de arquivos da área de trabalho, pois esse não é um conjunto fixo de aplicativos.
Execução do Ubuntu 15.10 / Java 1.8.0_66
Para se livrar do ponto de interrogação cinzento, adicione esta linha de código:
stage.getIcons().add(new Image(getClass().getResourceAsStream("/Images/orca.png")));