Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1904 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Débutant inside] Choisir x et y en écrivant dans un Componant

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Débutant inside] Choisir x et y en écrivant dans un Componant

n°592027
FrigoAcide
Posté le 16-12-2003 à 17:23:34  profilanswer
 

Salut, je cherche à écrire du texte à des coordonnées précises dans n'importe quel componant, ex un label. En fait c'est pour faire défiler un texte dans une frame qui contient d'autres éléments.
 
Si c'était une applet, je ferais  
 

Code :
  1. public class test extends Applet {
  2.   ...
  3.   public void paint (Graphcis g) {
  4.     ...
  5.     g.drawString (message, x, y);
  6.     ...
  7.   }
  8.   ...
  9. }


 
mais là je veux faire un truc plutôt comme :  

Code :
  1. public class test {
  2.   public test () {
  3.     Frame maFrame = new Frame ();
  4.     Panel monPanel = new Panel ();
  5.     monPanel.getGraphics().drawString (msg, x, y);
  6.     maFrame.add (monPanel);
  7.    
  8.     ...
  9.   }
  10. }


 
Mais ça va pas, il me dit  
Exception in thread "main" java.lang.NullPointerException
        at test.<init>(test.java:11)
        at test.main(test.java:20)
 
au moment de l'éxecution, la ligne 11 étant bien sûr monPanel.getGraphics().drawString (msg, x, y);
 
Voilà, pouvez-vous m'aider ?

mood
Publicité
Posté le 16-12-2003 à 17:23:34  profilanswer
 

n°592033
the real m​oins moins
Posté le 16-12-2003 à 17:46:29  profilanswer
 

tu sais ce que ça veut dire "NullPointerException" ?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°592043
FrigoAcide
Posté le 16-12-2003 à 18:08:34  profilanswer
 

Euh... [Débutant inside] <= :D
 
Ca veut dire qu'on essaye d'utiliser une variable pour laquelle on n'a pas alloué d'espace mémoire, c'est ça ?
 
(Cent ans après...) En fait ça y'est j'y suis, hier j'avais essayé de faire  

Code :
  1. Graphics g = new Graphics ();
  2. g = monPanel.getGraphics ();
  3. g.drawString ("phrase de test", 0, 0);


 
mais il me dit : java.awt.Graphics is abstract; cannot be instantiated
 
voilà et c'est à cause de ça que je me demandais comment écrire dans un componant, parce qu'avec une applet on se sert de la variable Graphics uniquement (enfin à ce que j'ai vu) dans la fonction paint (Graphics g), où là bien sûr on n'a pas à initialiser la variable Graphics.
 
Merci pour ton aide en tout cas.

n°592045
R3g
fonctionnaire certifié ITIL
Posté le 16-12-2003 à 18:13:37  profilanswer
 

FrigoAcide a écrit :

Euh... [Débutant inside] <= :D
 
Ca veut dire qu'on essaye d'utiliser une variable pour laquelle on n'a pas alloué d'espace mémoire, c'est ça ?
 
(Cent ans après...) En fait ça y'est j'y suis, hier j'avais essayé de faire  

Code :
  1. Graphics g = new Graphics ();
  2. g = monPanel.getGraphics ();
  3. g.drawString ("phrase de test", 0, 0);


 
mais il me dit : java.awt.Graphics is abstract; cannot be instantiated
 
voilà et c'est à cause de ça que je me demandais comment écrire dans un componant, parce qu'avec une applet on se sert de la variable Graphics uniquement (enfin à ce que j'ai vu) dans la fonction paint (Graphics g), où là bien sûr on n'a pas à initialiser la variable Graphics.
 
Merci pour ton aide en tout cas.

Non, c'est pas ça. Il faut d'abord essayer de comprendre ce que représente un objet de la classe Graphics. Je sais pas trop comment expliquer, en prog windows c'est un peu l'équivalent du DeviceContext ; en gros ca représente le prériphérique chargé de l'affichage, ici ton écran (en TRES gros).
Enfin tout ça pour dire que l'objet renvoyé par getGraphics() ne sera pas valide si l'objet sur lequel tu appelles la méthode n'est pas visible à l'écan.


---------------
Au royaume des sourds, les borgnes sont sourds.
n°592046
Cherrytree
cn=?
Posté le 16-12-2003 à 18:14:25  profilanswer
 

Graphics est abstract, tu ne peux pas écrire "new Graphics()".


---------------
Le site de ma maman
n°592047
Cherrytree
cn=?
Posté le 16-12-2003 à 18:15:17  profilanswer
 

Et puis passe par un label, qu'est ce que tu t'emmerdes avec drawString().
 
EDIT : 2500ème post, R3g. [:kadreg]


Message édité par Cherrytree le 16-12-2003 à 18:16:54

---------------
Le site de ma maman
n°592059
FrigoAcide
Posté le 16-12-2003 à 18:51:24  profilanswer
 

Cherrytree a écrit :

Et puis passe par un label, qu'est ce que tu t'emmerdes avec drawString().
 
EDIT : 2500ème post, R3g. [:kadreg]


 
OK, mais je veux décider à quelle coordonnée x je veux placer mon texte, et tout ce que j'ai trouvé pour le label, c'est un argument qui permet d'alligner le texte (gauche, centre, droit), pas assez précis pour ce que je veux faire donc...
 
Y'a pas un component qui existe, et qui me permette de faire ce que je veux ?

n°592071
R3g
fonctionnaire certifié ITIL
Posté le 16-12-2003 à 19:03:23  profilanswer
 

FrigoAcide a écrit :


 
OK, mais je veux décider à quelle coordonnée x je veux placer mon texte, et tout ce que j'ai trouvé pour le label, c'est un argument qui permet d'alligner le texte (gauche, centre, droit), pas assez précis pour ce que je veux faire donc...
 
Y'a pas un component qui existe, et qui me permette de faire ce que je veux ?

Canvas est fait pour ça. Et tu était sur la bonne voie, c'est juste que tu dois d'abord afficher ton composant avant d'appeler getGraphics()

Citation :

public Graphics getGraphics()Creates a graphics context for this component. This method will return null if this component is currently not displayable.


 
Cherrytree >  :bounce: je regarde jamais le nombre de posts, j'avais pas vu


---------------
Au royaume des sourds, les borgnes sont sourds.
n°592072
antp
Super Administrateur
Champion des excuses bidons
Posté le 16-12-2003 à 19:04:32  profilanswer
 

Le truc entre [ ] dans le titre c'est le langage en général hein :o Le fait que tu dois débutant on s'en fout :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°592076
FrigoAcide
Posté le 16-12-2003 à 19:13:13  profilanswer
 

R3g a écrit :

Canvas est fait pour ça. Et tu était sur la bonne voie, c'est juste que tu dois d'abord afficher ton composant avant d'appeler getGraphics()

Citation :

public Graphics getGraphics()Creates a graphics context for this component. This method will return null if this component is currently not displayable.


 
Cherrytree >  :bounce: je regarde jamais le nombre de posts, j'avais pas vu


 
En effet je viens de m'en rendre compte. Je peux faire monPanel.getGraphics ().drawString ("phrase de test", 100, 100); après l'affichage de ma frame, mais j'obtiens aucun résultat.
 
Sinon je vais essayer Canvas, merci.
 

Citation :

Le truc entre [ ] dans le titre c'est le langage en général hein :o Le fait que tu dois débutant on s'en fout :o


 
Clair j'ai même pas précisé que c'était en java, dsl.

mood
Publicité
Posté le 16-12-2003 à 19:13:13  profilanswer
 

n°593481
droopy 76
Posté le 18-12-2003 à 14:32:50  profilanswer
 

Sinon, une solution (qui n'est pas génial) pour mettre un composant à l'aide de ces coordonnées cartésiennes est d'annulée le Layout par défaut de ton panel ou de ta fenêtre
(setLayout(null);)
Sinon, le Canevas est la meilleur solution. Ainsi, tu pourras le réutiliser ailleurs


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Débutant inside] Choisir x et y en écrivant dans un Componant

 

Sujets relatifs
[C++ 10 lignes inside] Probleme avec programme de cryptage XOR[JS] - Débutant - Besoin d'aide pour un script ...
(newb' inside) cacher une div ?[Latex] Vous utilisez quelle distro *TeX (pb de dvi inside)
[Borland]Comment envoyer et récupérer une AnsiString (SendBuf inside)?Débutant en c++
[C] passer du dos à W2K/XP et aide aux librairies pour un debutantquestion de debutant sur JAVACC
[Algo] Débutant à un poblème avec un exercice[VBA/ADO] Impossible de choisir une valeur ds ma combo
Plus de sujets relatifs à : [Débutant inside] Choisir x et y en écrivant dans un Componant


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR