Adicionar imagem ao JAR Java

Eu estou usando algumas imagens no JFrame , eu dei um caminho para carregar a imagem no painel do quadro, mas quando eu fiz jar do aplicativo não exibindo imagens.
Onde devo colocar a imagem?
Como devo especificar o caminho?

 setIconImage(Toolkit.getDefaultToolkit().getImage( "D:\\RFT\\src\\dailogBox\\dump.jpg")); 

assim eu fiz.

    Primeiro passo: Coloque sua imagem em um local definido no seu arquivo JAR. Se você colocá-lo na pasta src, talvez seu IDE ou sua ferramenta de compilation o empacote para o JAR automaticamente. Caso contrário, verifique a documentação do seu IDE / ferramenta de construção, em que local você tem que colocá-lo.

    Segunda etapa: acesse o arquivo do seu programa. Eu suponho que você colocou no pacote (o caminho no seu JAR) package1 / package2 e o arquivo é chamado dump.jpg. Nesse caso, você chama:

     setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/package1/package2/dump.jpg"))); 

    getClass (). getResource (…) retorna uma URL para um recurso em seu classpath. Você inicia o caminho no caminho de class com um ‘/’ e usa o caminho / pacotes completo para o seu recurso, separado por ‘/’.

    Esta é a melhor maneira de lidar com todas as imagens e icons em um aplicativo JAR.

    Uma vez que você tenha compactado todas as suas imagens e icons em seu próprio arquivo JAR – Configure seu caminho de construção adicionando o arquivo JAR de imagens na sua guia de bibliotecas para que ele seja incluído no seu caminho de class.

    Em seguida, basta usar as seguintes linhas de código 3x no início do seu constuctor para acessar qualquer imagem que você precisar para qualquer coisa, incluindo uma imagem SystemTray que não aceite o ImageIcon simples como seu ícone principal (estranho eu sei). As linhas 3x são:

      URL iconUrl = this.getClass().getResource("/image-iconb.png"); Toolkit tk = this.getToolkit(); someimgicon = tk.getImage(iconUrl); 

    (someimgicon é apenas um construtor declarado variável Image) Agora você pode definir um ícone de janela tão simples como:

     setIconImage(someimgicon); 

    e ao mesmo tempo, use a mesma variável ao definir o System TrayIcon declarando:

      trayIcon = new TrayIcon(someimgicon, "SystemTray Demo", popupMenu); 

    O item acima permite que você declare imagens ou ImageIcons de maneira fácil e centralizada, sem correr o risco de não manter os resources de imagem no lugar certo. Ele mantém tudo em ordem, com o JAR contendo todas as suas imagens compiladas automaticamente em tempo de execução e distribuição do seu programa.

    Como bônus , uma vez que o JAR é registrado no seu classpath – você pode continuar adicionando qualquer outra imagem no mesmo JAR a qualquer momento sem qualquer problema – Tudo simplesmente funciona e as imagens adicionadas ficam imediatamente disponíveis para o seu aplicativo.

    Muito melhor na minha opinião.

    Primeiro, crie um pacote (digamos imagens) em Pacotes de origem

    copie todas as suas imagens para este pacote (quando você cria um pacote, uma pasta no nome do seu pacote será criada dentro da sua pasta src do projeto, então copie as imagens para ele)

    Você pode acessar suas imagens do seu programa como

    Exemplo 1:

      this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/images/yourimagename"))); 

    Exemplo 2:

      URL imageurl = getClass().getResource("/images/imagename");//assuming your package name is images Image myPicture = Toolkit.getDefaultToolkit().getImage(imageurl); JLabel piclabel = new JLabel(new ImageIcon( myPicture )); piclabel.setBounds(0,0,myPicture.getWidth(null),myPicture.getHeight(null)); 

    Agora use este piclabel JLabel

    Há muitas maneiras, por exemplo, fazer uma pasta chamada resources no seu arquivo jar e referenciar suas imagens de lá usando um caminho relativo ….

    No netbeans 8.1, o que fiz foi include a pasta de icons e outras imagens chamadas Resources dentro da pasta src no arquivo de projeto. Então, sempre que eu construo o arquivo Jar, a pasta é incluída. A tree de arquivos deve ser assim:

    • src (arquivos Java em pacotes de fonts estão aqui)
    • ** PACOTE QUE VOCÊ NOMEIA NO PROJETO **

      • file.java
    • Recursos

      • image.jpg

    O código deve ser como:

     jToggleButton1.setIcon(new javax.swing.ImageIcon(this.getClass().getResource("/resources/image.jpg"))); 

    Adicione a imagem no seu jar como um recurso, (assumindo que o jar está no seu classpath), use o carregador de class para carregá-lo como um stream .

    A maneira mais fácil de fazer isso é ter a pasta que sua imagem está em paralelo ao arquivo jar. Exemplo:

    Diga no código que você chama a imagem assim:

     pic = new ImageIcon("Pics/buttonpic.jpg"); 

    Isso significa que sua imagem seria chamada de buttonpic e está localizada em uma pasta chamada Pics no diretório do projeto. Agora, depois de criar seu arquivo jar, copie a pasta Pics para a mesma pasta em que seu arquivo jar está localizado.

    Exemplo: se o seu arquivo jar estiver localizado em sua área de trabalho, coloque a pasta Pics na área de trabalho. Agora, quando você executar o arquivo jar, suas imagens funcionarão corretamente. Agora, para encobrir o fato de que você precisa ter sua pasta Pics ao lado de seu arquivo jar, você pode criar uma nova pasta e colocar nessa pasta o seu jar e a pasta Pics. Em seguida, clique com o botão direito no jar e crie um atalho, coloque esse atalho na área de trabalho ou onde você deseja ter apenas o arquivo jar, e coloque a nova pasta que você criou onde quer que você queira escondê-lo.