Insere tableaux dans un rectangle drag&drop

hkahil Messages postés 197 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 21 décembre 2012 - 5 août 2008 à 13:50
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 6 août 2008 à 09:18
Bonjour j'ai recupere ce code sur le site
je souhaiterais y inserer un tableaux
pouvez vous m'aider svp

[CODE]

import java.awt.AlphaComposite;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JButton;

/**
 * @author A.B.
 *
 */
public class DraggableShape extends Canvas implements MouseMotionListener, MouseListener {
   
   
    /** Largeur du carré */
    public static final int SIDE = 200;
   
    /** Indique si le carré est en mouvement ou non */
    private boolean moving = false;
   
    /** Abscisse du coin supérieur-gauche */
    private int xPosition;
   
    /** Ordonnée du coin supérieur-gauche */
    private int yPosition;
   
    /** Abscisse du point où on fait glisser le carré */
    private int xDragg;
   
    /** Ordonnée du point où on fait glisser le carré */
    private int yDragg;
   
    /**
     * Rectangle qui représente le périmètre de la fenêtre.
     * Cette attribut sert essentiellement à capter si la fenêtre a été redimensionner.
     */
    private Rectangle frameRect;
   
    /**
     * Pour assurer la fluidité du mouvement du carré sans qu'il aura des troubles
     * On se sert de cet attribut pour simuler la technique du double-buffering.
     */
    private Image doubleBufferImage;
   
    /**
     * Crée une nouvelle instance de la classe 'DraggableShape'.
     */
    public DraggableShape() {
        setSize(600, 400);
        frameRect = new Rectangle(401, 401);
        addMouseListener(this);
        addMouseMotionListener(this);
    }
   
    /**
     * Quand on maintient une touche de la souris enfoncée et on fait glisser le curseur.
     */
    public void mouseDragged(MouseEvent e) {
        if (moving) {
            xPosition = e.getX() - xDragg;
            yPosition = e.getY() - yDragg;
            repaint();
        }
    }

    @Override
    public void paint(Graphics g) {
        // Créer un objet de type Graphics2D
        Graphics2D g2 = (Graphics2D)g;
       
       
        // Colorer le fond en blanc
        g2.setColor(Color.WHITE);
        g2.fillRect(0, 0, frameRect.width, frameRect.height);
       
        // Dessiner le carré en rouge
        g2.setColor(Color.RED);
        g2.fillRect(xPosition, yPosition, SIDE, SIDE);
       
        // Dessiner un contour transparent en bleu pour simuler l'effet de séléction
        if (moving) {
            g2.setColor(Color.BLUE);
            g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .3f));
            g2.fillRect(xPosition - 5, yPosition - 5, SIDE + 10, SIDE + 10);
        }
    }
   
    @Override
    public void update(Graphics g) {
        if (!frameRect.equals(getBounds())) {
            frameRect = getBounds();
            doubleBufferImage = createImage(frameRect.width, frameRect.height);
        }
       
        // Ne pas dépasser les bords de la fenêtre
        if (xPosition < 0) {
            xPosition = 0;
        } else if (xPosition > (frameRect.width - SIDE)) {
            xPosition = frameRect.width - SIDE;
        }
       
        // Ne pas dépasser les bords de la fenêtre
        if (yPosition < 0) {
            yPosition = 0;
        } else if (yPosition > (frameRect.height - SIDE)) {
            yPosition = frameRect.height - SIDE;
        }
       
        // Dessiner sur l'image intermédiaire
        Graphics imageGraphics = doubleBufferImage.getGraphics();
        paint(imageGraphics);
       
        // Afficher l'image intermédiaire
        g.drawImage(doubleBufferImage, 0, 0, this);
    }
   
    public void mouseMoved(MouseEvent e) {
    }

    public void mouseClicked(MouseEvent e) {}

    public void mouseEntered(MouseEvent e) {}

    public void mouseExited(MouseEvent e) {}

    public void mousePressed(MouseEvent e) {
        int x = e.getX();
        if ((x < xPosition) || (x > (xPosition + SIDE))) {
            return;
        }
       
        int y = e.getY();
        if ((y < yPosition) || (y > (yPosition + SIDE))) {
            return;
        }
       
        xDragg = x - xPosition;
        yDragg = y - yPosition;
        moving = true;
    }

    public void mouseReleased(MouseEvent e) {
        if (moving) {
            xPosition = e.getX() - xDragg;
            yPosition = e.getY() - yDragg;
            moving = false;
            repaint();
        }
    }

}
[CODE]

6 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
5 août 2008 à 14:18
Salut,

"je souhaiterais y inserer un tableaux"
>> Mais encore ?

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
hkahil Messages postés 197 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 21 décembre 2012
5 août 2008 à 18:35
j'ai pas compris ta réponse?
je voudrais juste savoir comment faire pour insérer des éléments dans mon rectangle drag&drop
merci
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
6 août 2008 à 00:12
Salut,

un rectangle (de type shape ?) ou un tableu comme tu mets dans le titre et dans ta question (je te cite : "je souhaiterais y inserer un tableaux") ?

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
hkahil Messages postés 197 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 21 décembre 2012
6 août 2008 à 02:05
En fait je ne sais comment faire mon but étant d'avoir des donné dans un tableaux
JTable et de pouvoir déplacer en drag&drop ce tableaux
j'avais penser a utiliser mon exemple qui donne déjà une forme rectangle que je peux déplacer   et d'y insérer le tableaux dedans comme  ça le tableaux se déplacera avec le rectangle
Ou bien
 il serais plus judicieux de créer un tableaux tout court et de lui affecter l'évènement drag&drop
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
6 août 2008 à 07:47
Je n'ai pas regarder ton code, mais ceci pourrais t'aider: DargDropTable.java
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
6 août 2008 à 09:18
Salut,

sinon il y a un très bon exemple ICI, bon le code peut paraitre violent mais l'effet est garanti et de plus en utilisant le code (avec un chouilla d'adaptation) tu peux le faire sur tous les composants swing.

tu peux également regarder du coté de l'api swingX, qui doit surement proposer ce genre de chose (en version plus simplifié que le premier lien)

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
Rejoignez-nous