affichage java

affichage java - Java - Programmation

Marsh Posté le 10-09-2004 à 10:46:00    

bonjour,
 
je souhaiterais creer des formes graphiques basique en java qui contiennent du texte, par exemple tout simplement un rectangle avec du texte aligne en son centre
 
j'ai deja ecumer pas mal de tutoriaux et sites, cependant je n'ai trouver que cette reponse:
 
 
public void paint(Graphics g){
 
    g.drawRect(RectX, RectY, 100, 50);
    g.drawString("texte", textx,texty);  
 
}
 
 
ca reviens a tricher c'est à dire dessiner le rectangle, puis ecrire du texte superpose par rapport a la position du rectangle
 
je suis certain qu'il y a un moyen de creer un rectangle dont on peut attribuer un texte pour l'affichage, ca a l'air tres basique!
 
 
si les librairies standards ne permettent pas de le faire, comment creer proprement une classe qui pourras me donner un objet de ce type?
 
c'est à dire que si je veux modifier le texte de ce rectangle je ferais par exemple :
 
rectangle.texte = "nouveau texte";
 
 
voila, je suis un newb autodidacte en java et c'est dur a apprehender toutes les classes...

Reply

Marsh Posté le 10-09-2004 à 10:46:00   

Reply

Marsh Posté le 10-09-2004 à 11:03:43    

Honnêtement la meilleur solution , c'est le JLabel !

Reply

Marsh Posté le 10-09-2004 à 11:17:26    

en fait non car la premiere etape serais de dessiner ce que je t'ai dis, ensuite il faudrais lier les elements entres eux via le dessin d'une ligne, car le but est de creer uin schema qui represente les liaisons pere/fils que represente chacun des elements...ca non plus je ne sais pas comment faire, je croyais que ca allais etre bcp plus simple mais en fait swing n'est pas souple des que l'on veut sortir legerement du carcan standard

Reply

Marsh Posté le 10-09-2004 à 11:21:16    

java2D ...à mon avis c pareil partout : si tu cherches à faire un arbre, t déjà plus dans le standard...
 
par contre si tu trouves ca m'intéresse...mais je vois pas en quoi ton composant avec un paint qui dit de faire un rectangle est tricher...c exactement le but de java2d : prendre le relai de swing tout en s'y intégrant parfaitement, pour faire tt ce que tu veux


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 10-09-2004 à 11:24:46    

Ha ben oui, mais si tu dis pas tout ...
Essaye de voir du coté des SWT d'eclipse.  
Je ne pense pas par contre que tu trouvera une solution facile

Reply

Marsh Posté le 10-09-2004 à 11:36:23    

je vois pas en quoi SWT sera différent...y'a effectivement des plugins qui ont été écris pour représenter des graphs...mais y'en a en swing aussi...dans les 2 cas ce sont des custom components, qui doivent etre blindés de java 2D...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 10-09-2004 à 11:41:32    

Jubijub a écrit :

je vois pas en quoi SWT sera différent...y'a effectivement des plugins qui ont été écris pour représenter des graphs...mais y'en a en swing aussi...dans les 2 cas ce sont des custom components, qui doivent etre blindés de java 2D...


 
SWT est plus permissif en graphiquement que swing c tout.
De plus je ne parlais pas de plugin.
 
 

Reply

Marsh Posté le 10-09-2004 à 11:54:57    

hmmm..mouai c loin d'etre gagne pour moi ...arf
vous savez dans quel librairie je dois orienter ma recherche pour trouver ce que je veux faire?
 

Reply

Marsh Posté le 10-09-2004 à 13:50:15    

-->gedeon : le fait que des softs ayant des graphs comme il veut existent prouvent qu'on peut le faire avec les 2 toolkits.
 
-->kungouf : regarde java2D ...c ca la librairie...c une lib de dessin qui s'intègre à Swing, ou peut fonctionner en dehors...c tout con...Regarde le java tutorial, y'a un trail dessus...sinon la Swing connection a un article sur l'interraction java2D / swing


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 10-09-2004 à 13:51:34    

merci Jubijub je vais arpenter un peu java 2d

Reply

Marsh Posté le 10-09-2004 à 13:51:34   

Reply

Marsh Posté le 10-09-2004 à 14:13:22    

Jubijub a écrit :

-->gedeon : le fait que des softs ayant des graphs comme il veut existent prouvent qu'on peut le faire avec les 2 toolkits.


 
Hallucinant ! J'ai dis le contraire ?

Reply

Marsh Posté le 10-09-2004 à 14:56:23    

alors maintenant j'ai plus ou moins presque reussi à 'esquisser' ce que je voulais faire, voici mes classes:
 
 
 
public class MainTest extends JFrame{
 
 public MainTest(){
  super("creation d'elements" );
 
  setSize(500, 500);
  show();
 }
 
 public void paint(Graphics g){  
 
  Rectangle rec1 = new Rectangle(5, 10, 100, 50);
  Rectangle rec2 = new Rectangle(115, 10, 100, 50);
 
  rec1.trace(g);
  rec2.trace(g);
 }  
 
 public static void main(String args[]){
 
  MainTest app = new MainTest();
 
  //int Rectx, int Recty, int RectLongx, int RectLongy
 
  app.addWindowListener(
   new WindowAdapter(){
    public void windowClosing(WindowEvent e){
     System.exit(0);
    }
   }  
  );
   
 
 }
}
 
 
public class Rectangle extends JFrame
{
 private int Rectx, Recty, RectLongx, RectLongy;
 private static int textx, texty;
 
 public Rectangle(int Rectx, int Recty, int RectLongx, int RectLongy)  
 {
  this.Rectx = Rectx;
  this.Recty = Recty;
  this.RectLongx = RectLongx;
  this.RectLongy = RectLongy;
 
  textx = Rectx + 20;
  texty = Recty + 5;
 }
 
 public void trace(Graphics g)
 {
  g.setColor(Color.WHITE);
 
  g.drawRect(Rectx, Recty, RectLongx, RectLongy);
  g.drawString("contenu", textx, texty);
 
  System.out.println("coordonnee"+textx+ ", "+ texty);
 }
 
}
 
 
par contre le probleme que j'ai c'est pour afficher le texte à 'l'interieur ' des rectangles
 
en effet le g.drawString() n'affiche rien, pensant que c'etait du à l'instance j'ai mis textx et texy qui sont les coordonnees d'affichage du texte en static
 
 
dans l'ordre:
 
1- instanciation des rectangles (calcul coordonnees affichage rectangle + texte)
 
2- appel a la fonction trace de chacun des objet pour les tracers dans la JFrame, le probleme c'est que le texte ne s'affiche pas
 
-> j'ai essaye de mettre un bloc en dur et celui-ci s'affiche tout a fait correctement:
 
public void trace(Graphics g)
{
 g.setColor(Color.WHITE);
 
 g.drawRect(Rectx, Recty, RectLongx, RectLongy);
        g.drawString("contenu", textx, texty); // n'affiche rien
 g.drawString("contenu", 250, 50); // s'affiche correctement
 
 System.out.println("coordonnee"+textx+ ", "+ texty);
}


Message édité par kungouf le 10-09-2004 à 15:02:41
Reply

Marsh Posté le 10-09-2004 à 15:22:46    

Conseils :
1 -  Enleve  

Code :
  1. Rectangle rec1 = new Rectangle(5, 10, 100, 50);
  2.   Rectangle rec2 = new Rectangle(115, 10, 100, 50);
  3.   rec1.trace(g);
  4.   rec2.trace(g);


de la methode paint  
Il sont recréés a chaque fois , c super lourd comme traitement et  
inutile
 
2 - Transforme tes trace en paint, ça rendra l'affichage de tes composant  autonome  
 
 
 
 

Reply

Marsh Posté le 14-09-2004 à 11:44:30    

ok merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed