Un bureau d'icône ?

Un bureau d'icône ? - Java - Programmation

Marsh Posté le 24-10-2004 à 21:49:30    

Bonsoir !
 
Je me demandais comment créer un "bureau' d'icônes en java, genre, un panel, avec des icônes qu'on peut sélectionner ET bouger sur ce même panel, avec gestion des clics etc. (à la genre explorateur windows / nautilus, konqueror, au choix)
 
J'ai une version avec une JList mais on ne peut pas bouger les icônes. J'ai été voir du côté des JInternalFrame et JDesktopPane, mais impossible d'avoir ce que je cherches.
 
Help ?

Reply

Marsh Posté le 24-10-2004 à 21:49:30   

Reply

Marsh Posté le 24-10-2004 à 21:52:06    

JDesktopPane ben si ça sert à ça.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 24-10-2004 à 21:55:38    

Bon, bah je vais aller appronfondir alors. :| J'avais rajouté un JLabel par ex avec un icône, mais impo' à bouger. J'vais voir ça de plus près so.

Reply

Marsh Posté le 24-10-2004 à 22:36:30    

J'ai surchargé paint, et dedans, je met un icône + du texte, et je peux le bouger, c'est ce que je voulais. Mais la sélection n'est prise en compte que si on clique sur l'emplacement de la barre de titre (qui n'apparait pas dû à la surcharge de paint), même en mettant simplement un "return true" dans les méthodes contains(). Pourquoi ?
 
De plus, après, quand je voudrai placer pleins d'icônes, je sens que je vais devoir m'amuser à calculer leurs positions etc. Ca promet.
 
Y'a t il un moyen plus simple que je n'ai pas vu ?

Reply

Marsh Posté le 24-10-2004 à 22:39:14    

il est interdit de toucher à paint() en swing.
 
et tu n'est pas obligé de calculer leur position, tu mets le handler de clic sur le JLabel et pas sur le bureau.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 24-10-2004 à 22:50:34    

J'ai le droit de toucher aux autres paint ? j'ai surchargé paintComponent avec le code que j'avais mis dans paint, paintBorder et paintChildren à return direct. Mais il semble qu'il y est encore un prob parfois si je bouge l'icône.
 
"et tu n'est pas obligé de calculer leur position, tu mets le handler de clic sur le JLabel et pas sur le bureau."
 
Euh, tu peux expliciter ?

Reply

Marsh Posté le 24-10-2004 à 23:59:04    

tu mets ton icone dans un JLabel, et tu mets un MouseListener sur le JLabel. tu peux aussi mettre tout un tas de bordel dedans comme des tooltips, des bordures, des merguez du html, etc.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 25-10-2004 à 14:22:57    

JMerguez [:aloy]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-11-2004 à 22:11:04    

Bon bon bon, pour en revenir à cette histoire, effectivement, j'ai fais comme tu as dis nraynaud, le prob', c'est que dans mon JPanel par exemple (où je rajoute des JLabel qui add un mouse et mousemotion, le déplacement est ok), je mets un flowlayout ou gridlayout, peu importe, ca ne gère pas les scrollbars, ca dépasse dans le panel en fait, mais ca ne les rajoutes pas. J'ai fouiné un peu partout, testé tous les layouts/options du jscrollbar, rien. Quel est le 'truc' ?
 
En gros, niveau code :

Code :
  1. Container c = getContentPane();
  2.                 c.setLayout(new FlowLayout());
  3.                 JPanel p = new JPanel(new FlowLayout());
  4.                 for (int i = 0; i < N; i++)
  5.                         p.add(new SuperLabel());
  6.                 c.add(new JScrollPane(p));


Code :
  1. class SuperLabel
  2.                 extends JLabel
  3.                 implements MouseListener, MouseMotionListener {
  4.                 private static int n = 1;
  5.                 public SuperLabel() {
  6.                         super("     " + n++ +"     " );
  7.                         addMouseListener(this);
  8.                         addMouseMotionListener(this);
  9.                 }
  10. ...

Reply

Marsh Posté le 06-11-2004 à 10:01:39    

Va voir le code source de Touchgraph, c'est un bon exemple bien clair je trouve.  
 
http://www.touchgraph.com/

Reply

Sujets relatifs:

Leave a Replay

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