fatalerror
Messages postés17Date d'inscriptiondimanche 24 mars 2013StatutMembreDernière intervention12 novembre 2017
-
5 sept. 2015 à 21:54
fatalerror
Messages postés17Date d'inscriptiondimanche 24 mars 2013StatutMembreDernière intervention12 novembre 2017
-
6 sept. 2015 à 07:45
Salutations!
Je voudrais déplacer partout dans la fenêtre un composant que j'ai dessiné, seulement ce déplacement n'est pas assez net et je ne sais pas trop quoi faire pour améliorer le résultat. Voici mes bouts de codes:
@Override public void mouseDragged(MouseEvent e) { // TODO Auto-generated method stub int x = e.getX(); int y = e.getY(); this.setBounds(x, y, 200, 300); repaint(); //System.out.println("x = "+x+" ; y = "+y);
}
@Override public void mouseMoved(MouseEvent e) { // TODO Auto-generated method stub //System.out.println("x = "+x+" ; y = "+y);
}
}
import java.awt.Color; import javax.swing.JFrame;
public class Fenetre extends JFrame {
private static int largeurFenetre = 900, hauteurFenetre = 600;
public Fenetre(String titre) { super(titre); Rectangle rect = new Rectangle(Color.GRAY); rect.setBounds(100, 100, 200, 300); add(rect);
KX
Messages postés16752Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention31 août 2024127 5 sept. 2015 à 22:22
Bonjour,
Pour commencer je te conseilles de séparer Component et Listener dans des classes différentes, pour ne pas mélanger la vue et le contrôleur.
Et pour ton problème, il faut utiliser un MouseListener pour identifier où tu es dans la fenêtre au moment tu cliques la première fois, c'est à partir de cette position que se calcule le déplacement du MouseMotionListener.
import java.awt.Component;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
public final class MouseTranslateListener implements MouseListener, MouseMotionListener {
private final Point pos;
// private: use addToComponent(Component) instead
private MouseTranslateListener() {
pos = new Point();
}
public static void addToComponent(Component comp) {
MouseTranslateListener listener = new MouseTranslateListener();
comp.addMouseListener(listener);
comp.addMouseMotionListener(listener);
}
@Override
public void mousePressed(MouseEvent e) {
pos.setLocation(e.getX(), e.getY());
}
@Override
public void mouseDragged(MouseEvent e) {
Component comp = e.getComponent();
comp.setLocation(comp.getX() + e.getX() - pos.x, comp.getY() + e.getY() - pos.y);
}
public void mouseClicked(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}
}
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JComponent;
class Rectangle extends JComponent {
private final Color couleurCellule;
public Rectangle(final Color c) {
couleurCellule = c;
MouseTranslateListener.addToComponent(this);
}
@Override
public void paintComponent(final Graphics g) {
super.paintComponent(g);
g.setColor(couleurCellule);
g.fillRect(50, 150, 200, 300);
}
}
fatalerror
Messages postés17Date d'inscriptiondimanche 24 mars 2013StatutMembreDernière intervention12 novembre 2017 6 sept. 2015 à 07:45
6 sept. 2015 à 07:45