Je viens de créer un programme sous Netbeans, tout est fonctionnelle, j'ai réussis à le mettre en .jar également. Mais lorsque je viens d'ajouter un nouveau bouton sur mon projet avec une image à la place d'un texte, celle-ci ne s'affiche pas sur mon .jar tandis qu'elle s'affiche sur le "run" de Netbeans (j'ai aussi fait le "Clean & Build" sur Netbeans), mais toujours rien.
Je me trouve vers vous car je n'arrive pas à trouver la solution.
Si vous pouvez m'aidez ca serait hyper sympa, merci.
- Edité par JestinSivarajah1 9 février 2022 à 14:54:57
Il faudrait en savoir davantage sur la manière utilisée pour
> ajouter un nouveau bouton sur mon projet avec une image à la place d'un texte
genre, la manière de désigner l'image, qui devrait être une ressource située dans le jar.
Parce que là, pour trouver ce qui ne va pas dans un code qu'on ne voit pas, vaut mieux poser la question à une voyante que sur le forum.
Donc, pour éviter de nous montrer 3000 lignes de code dont on ne saura pas quoi faire ce qui serait bien :
faire une appli minimale avec UN bouton montrant une image plutôt qu'un texte (ça devrait être vite fait)
nous la montrer
---
Bon, j'ai fait un peu de retro-computing avec swing, mélangé avec du Java plus moderne.
Voila un source qui affiche une bouton et deux labels, dont un qui a une image
package javaawt;
import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Javaawt extends JFrame {
public static void main(String[] args) throws IOException {
var mainFrame = new Javaawt("Hello World example");
mainFrame.setSize(300, 200);
mainFrame.setVisible(true);
}
public Javaawt(String frameTitle) throws IOException {
super(frameTitle);
var title = new JLabel("Hello World", JLabel.CENTER);
var quitButton = new JButton("Quit");
// l'image vient d'une resource récupérée par le loader de la classe
var loader = this.getClass().getClassLoader();
var resource = loader.getResource("javaawt/img.png");
var icon = new ImageIcon(resource);
var labelImage
= // new JLabel("Image ici", JLabel.CENTER);
new JLabel(icon);
var controlPanel = new JPanel();
controlPanel.setLayout(new BorderLayout());
controlPanel.add(title, BorderLayout.NORTH);
controlPanel.add(labelImage, BorderLayout.CENTER);
controlPanel.add(quitButton, BorderLayout.EAST);
add(controlPanel);
quitButton.addActionListener(a -> System.exit(0));
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
}
}
Le jar contient ceci :
$ jar tf dist/javaawt.jar
META-INF/
META-INF/MANIFEST.MF
javaawt/
javaawt/Javaawt$1.class
javaawt/Javaawt.class
javaawt/img.png
il a été produit à partir du répertoire des sources contenant le source et l'image
Oui c'est vrai qu'avec un bout de code c'était plus facile à m'orienter.
Merci encore de votre réponse et de votre aide.
J'ai pu trouver la solution. Il fallait seulement que j'insère l'image concerné dans le dossier "dist" et non dans un package "ressource".
- Edité par JestinSivarajah1 20 avril 2022 à 11:12:50
Transfert en .jar
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.