hkahil
Messages postés197Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention21 décembre 2012
-
5 août 2008 à 13:50
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 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
/**
* @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);
hkahil
Messages postés197Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention21 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 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 ..."