GuyJava
Messages postés28Date d'inscriptionmercredi 11 mai 2005StatutMembreDernière intervention16 novembre 2005
-
19 sept. 2005 à 16:10
GuyJava
Messages postés28Date d'inscriptionmercredi 11 mai 2005StatutMembreDernière intervention16 novembre 2005
-
29 sept. 2005 à 20:36
Bonjour à tous,
Dans une classe je dessine une fenêtre comportant les éléments d'un menu. Une classe hérite de la classe menu. Dans cette deuxième classe, je dispose de différentes composants disposés avec un GridBagLayout et un GridBagConstraints. Ces composants sont des Choice, JTextField. Ces derniers s'affichent très bien. Toutefois, quand je veux insérer un dessin au format Jpeg ou Gif, le dessin ne s'affiche pas pourtant, la fonction paintComponent(g) est appelée.
Donc, est-il impossible de dessiner une image via un héritage ?
GuyJava
Messages postés28Date d'inscriptionmercredi 11 mai 2005StatutMembreDernière intervention16 novembre 2005 25 sept. 2005 à 12:51
Bonjour,
Je vous remercie pour votre proposition de solution avec la procédure repaint().
Jai implémenté cette dernière dans la procédure paintComponent(). Cette solution ne me permet toujours pas dafficher le dessin désiré. Il me semble quon utilise la procédure repaint() afin de forcer le programme à redessiner la fenêtre (rafraîchir). Dans mon cas, le programme passe dans la procédure paintComponent().
Jai une classe qui construit un menu (Fichier, ). Dautres en héritent afin déviter décrire à chaque fois le menu. Si je demande le dessin sur la fenêtre directement qui crée le menu, alors mon dessin saffiche. En revanche, si je demande laffichage du dessin via une autre fenêtre, qui en réalité est celui du menu par héritage, alors le dessin ne saffiche pas bien que la procédure paintComponent(). Jai dautres composants (Label, JtextField ) construits avec un GridBagLayout, GridBagConstraints et Panel qui saffichent sans aucun problème.
Donc, le problème proviendrait de lhéritage. Mais pourquoi les autres composants saffichent ?
Merci par avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
GuyJava
Messages postés28Date d'inscriptionmercredi 11 mai 2005StatutMembreDernière intervention16 novembre 2005 25 sept. 2005 à 17:45
Merci pour tout.
Ci-joint un extrait de code relatif à mon problème.
//Classe ListeEtudiants hérite de la classe CadreMain qui construit le menu
public class ListeEtudiants extends CadreMain implements MouseListener
{
private Container container=null;
private GridBagLayout layout = new GridBagLayout();;
private GridBagConstraints contraintes = new GridBagConstraints();
private JPanel panelInfoEtudiant = new JPanel();
public ListeEtudiants()
{
container = getContentPane();
container.setLayout(layout);
//Titre de la fenêtre pour la classe ListeEtudiants
setTitle("MODULE LISTE DES ETUDIANTS");
//Cadre dans lequel devrait être dessiner une photo
Border cadrePhoto = rderFactory.createTitledBorder(etched,"Photo");
panelPhoto.setBorder(cadrePhoto);
panelPhoto.setLayout(new GridBagLayout());
}
public ResultSet getTable(String table)
{
return getQuery("SELECT * FROM " + table + " ORDER BY NomET ASC");
}
//Fonction qui interroge une base de données Access afin de récupérer le nom du dessin
public ResultSet getQuery(String query) //Retourne le résultat de la requête
{
String retourRequete=null;
GuyJava
Messages postés28Date d'inscriptionmercredi 11 mai 2005StatutMembreDernière intervention16 novembre 2005 27 sept. 2005 à 08:04
J'ai trouvé la solution partielle à mon problème d'affichage. Mon dessin ne s'affichait pas car la dimenssion de ce dernier est supérieure à la place réservée par le composant. Donc dans le paintComposant, j'ai formater la taille du dessin afin qu'il puisse entrer dans le composant.
Problème maintenant, j'ai un tout petit dessin. Donc comment augmenter la taille d'un composant ?
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 27 sept. 2005 à 18:46
et bien normalement c est le layout qui s en charge
un BorderLayout par exemple fait coller le composant sur les bord du contenair
autrement tu peut aussi definir une preferedSize a ton composant ...
pour le drawImage tu peut aussi utiliser la methode avec definition de la taille de l image se qui a pour consequence de l étirer.. ;o)
GuyJava
Messages postés28Date d'inscriptionmercredi 11 mai 2005StatutMembreDernière intervention16 novembre 2005 29 sept. 2005 à 20:36
Bonjour,
Merci pour la proposition de solution.
J'ai trouvé la raison de l'affichage minuscule de mon dessin. J'utilise un objet GridBagConstraints. En conséquence, il fallait attribuer une valeur en conséquence à contraintes.ipadx=150;
contraintes.ipady=150;
afin de réserver la place dessin au dessin. Or, ces variables étaient à 0.
Toutefois, j'ai encore un problème avec l'affichage. Je dois faire apparaître plusieurs dessins successivement. Seul le premier apparaît. Il s'agit donc dun problème de rafraîchissement très certainement. Où placer la procédure repaint() afin que l'opération de rafraîchissement se fasse ?