Objet

Résolu/Fermé
titisoli Messages postés 18 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 1 mars 2019 - 29 juil. 2017 à 21:33
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 12 août 2017 à 16:46
Salut !

Je voudrais savoir comment crée une simple image que l'on peut bouger.

L'objet Image ne me parait pas le meilleure, pouvez-vous me conseillez un objet (image si c'est nécessaire) et me dire comment le bouger ?

Merci !

PS: Pour l'instant, j'utilise un STexturedButton, je ne sais pas si c'est de JAVA ou de l'API que j'utilise (Swinger). Il ne me paraît pas adapter (il permet de faire un boutton).

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
30 juil. 2017 à 02:15
Bonjour,

Par "bouger" l'image tu veux dire quoi ? Déplacer une image fixe sur ta fenêtre ou afficher une image dynamique (genre un Gif).

Sachant que dans les deux cas, n'importe quel composant Swing peut le faire via la méthode paint(Graphics)
1
titisoli Messages postés 18 Date d'inscription jeudi 26 janvier 2017 Statut Membre Dernière intervention 1 mars 2019
12 août 2017 à 15:11
Excuse moi de ma réponse tardive. J'ai compris ce que tu voulais dire et je parlait d'une image fixe a déplacer :)
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
12 août 2017 à 16:46
Voici un exemple en Java pur (sans API supplémentaire).
C'est assez générique car on pourrait s'en servir pour déplacer n'importe quoi.

import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class DraggableMouseAdapter extends MouseAdapter {

    private final Component component;
    private int dx, dy;

    public DraggableMouseAdapter(Component component) {
        this.component = component;
    }

    @Override
    public void mousePressed(MouseEvent e) {
        dx = component.getX() - e.getXOnScreen();
        dy = component.getY() - e.getYOnScreen();
    }

    @Override
    public void mouseDragged(MouseEvent e) {
        component.setLocation(dx + e.getXOnScreen(), dy + e.getYOnScreen());
    }

    public static void init(Component component) {
        DraggableMouseAdapter adapter = new DraggableMouseAdapter(component);
        component.addMouseListener(adapter);
        component.addMouseMotionListener(adapter);
    }
}

import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;

public class ImageComponent extends Component {
    private static final long serialVersionUID = 1;

    private final Image img;

    public ImageComponent(Image img) {
        this.img = img;
        setSize(getSize());
    }

    @Override
    public void paint(Graphics g) {
        g.drawImage(img, 0, 0, null);
    }

    @Override
    public Dimension getSize() {
        return new Dimension(img.getWidth(null), img.getHeight(null));
    }
}

import java.awt.Image;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;

public class Test {

    public static void main(String[] args) throws IOException {
        Image img = ImageIO.read(new File("C:/image.png"));
        ImageComponent imgComp = new ImageComponent(img);
        DraggableMouseAdapter.init(imgComp);

        JFrame frame = new JFrame();
        frame.setLayout(null);
        frame.setSize(800, 600);
        frame.add(imgComp);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
0