Création et manipulation d'un JLabel à la souris

nergaahl Messages postés 11 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 16 avril 2008 - 1 juin 2007 à 13:59
nergaahl Messages postés 11 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 16 avril 2008 - 2 juin 2007 à 11:41
Bonjour,


J'aimerai avoir si possible quelques petites explications à ce sujet.


J'arrive pour le moment à créer des graphiques simples ( cercle,
rectangle ) par le biais de boutons d'un menu, à cliquer dessus, les
déplacer et supprimer (je me suis servi de nombreux tutoriels de
livres, forums et sur le site de Sun), mais j'aimerai aller plus loin.

Et j'aimerai donc savoir s'il est possible de créer/déplacer/supprimer/..., par simple clic (ou deux
), un JLabel accompagné d'un texte et d'une petite image sur un JPanel,
à la place donc d'un rectangle ou d'un cercle et comment faire ?

Le problème c'est que je n'arrive pas à afficher correctement l'icône de mon JLabel.

Voici mon code d'init qui appartient a la classe Noeud :

privatevoid initImgLbl(){
ImageIcon icon = new ImageIcon(elem.type+".JPG", elem.nom);
elem.imgLbl = new JLabel(elem.nom, icon, JLabel.CENTER);
elem.imgLbl.setOpaque(true);
elem.img = icon.getImage();
}


et le code de mon PaintComponent (qui appartient a la classe qui hérite du JPanel) :

publicvoid paintComponent (Graphics g)
{
super.paintComponent(g);

for(Noeud n : liste)
{
g.drawImage(n.elem.img, (int)n.elem.p.getX(), (int)n.elem.p.getY(), null);
}
}


Je pense que c'est faisable vu les possibilités de Java et ce que j'ai vu voir, mais là je suis tombé sur un morceau bien dur et j'arrive pas (encore) à m'en sortir...


Merci !!

2 réponses

lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
1 juin 2007 à 14:09
Comme le code était illisible je te les refait..

public class LineInfoLabel implements MouseMotionListener {

private transient JLabel popup;


private JFrame frame;
/**
* Constructor makes a new LineInfoPopup invisible.
*/
public LineInfoLabel(JFrame maframe)
{
super();
popup = new JLabel();

frame= maframe;

}

/**
* Display the LineInfoPopup when MouseEvent occurs.
* @param event MouseEvent
* @param menuList Menu to display
*/
public void display(final double coordX, final double coordY, final JLabel identification)
{

// popup.add(identification);
popup = new JLabel(identification.getText());
popup.setBackground(Color.BLACK);
// popup.setLocation(500,300);
popup.setBounds(40,40,popup.getText().length() * 10,25);
popup.addMouseMotionListener(this);
frame.add(popup);
popup.setVisible(true);

}

/* (non-Javadoc)
* @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)
*/
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub

// popup.setLocation( e.getX() + popup.getLocationOnScreen().x , e.getY() + popup.getLocationOnScreen().y);
popup.setBounds(popup.getX()+e.getX()-10,popup.getY()+e.getY()-10,popup.getText().length() * 10,25);
}


/* (non-Javadoc)
* @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
*/
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub

}



}


public class Main {

private static LineInfoLabel monLabel;
private static JFrame fen;
public static void main(String args[])
{
fen = new JFrame();
fen.setSize(1024,800);



monLabel = new LineInfoLabel(fen);
fen.setVisible(true);
monLabel.display(100,100,new JLabel("coucou"));
}
}
0
nergaahl Messages postés 11 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 16 avril 2008
2 juin 2007 à 11:41
je vais tester ca, je verrai ou ca m'emmene :p
merci!
0