GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

[RESOLVIDO] Mover imagem em jPanel


#1

Boa tarde pessoal,

Estou com dúvida em um programinha que estou a fazer.
Necessito movimentar uma imagem dentro do JPanel, mas infelizmente não consigo.

O caso é que implementei um JLabel e nesse JLabel adiciono um icone.
Mas ao tentar dar um "paint" pra movimentar a imagem permanece estatica.
Tem como vocês me ajudarem?

Desde já agradeço a prestatividade!

Att.

public class InterConfiguracoes extends javax.swing.JFrame implements MouseListener, MouseMotionListener {
    Toolkit toolkit = Toolkit.getDefaultToolkit();
    Image image = toolkit.getImage(getClass().getResource("/Images/player_play.png"));
    int x = 360;
    int y = 300;
    /** Creates new form InterConfiguracoes */
    public InterConfiguracoes() {
        initComponents();
        this.setLocationRelativeTo(null);
	//jPanelCriado
        ujPanelTeste.setBounds(600, 600, 600, 600);
        this.setSize(900, 650);
        this.setResizable(false);
        setVisible(true);
        ImageIcon icon = new ImageIcon(image);
        jLabelStar.addMouseListener(this);
        jLabelStar.addMouseMotionListener(this);
        ujPanelTeste.add(jLabelStar);
    }
   @Override
    public void paint(Graphics g) {
        super.paintComponents(g);
        g.drawImage(image, x, y, this);
    }
    public void setX(int x1) {
        x = x1;
    }
    public void setY(int y1) {
        y = y1;
    }
    public void mouseClicked(MouseEvent e) {
        int valorX = e.getX();
        int valorY = e.getY();
        System.out.println("Valor X: " + valorX);
        System.out.println("Valor Y: " + valorY);
        repaint();
    }
    public void mousePressed(MouseEvent e) {
        //setX(e.getX());
        //setY(e.getY());
        repaint();
    }
    public void mouseDragged(MouseEvent e) {
        setX(e.getX());
        setY(e.getY());
        repaint();
    }
    public void mouseReleased(MouseEvent e) {
        int valorX = e.getX();
        int valorY = e.getY();
        System.out.println("Valor X: " + valorX);
        System.out.println("Valor Y: " + valorY);
        repaint();
    }

#2

entao cara, parece que ali no seu metodo mouseClicked(MouseEvent e) vc nao setando os valores de x e y e sim da um system...

tenta fazer ali setX(e.getX()); e pra Y tb.


#3

Procure estudar a API que você está usando:
http://pontov.com.br/site/java/48-java2d

Esses artigos te mostram desde como desenhar na tela, até fazer animações.


#4

Pessoal, agradeço demais a prestatividade de vocês! obrigado mesmo.
Godoy, muito obrigado pela dica do site. Não o conhecia.
Mas consegui resolver meu problema!!!
Abaixo segue as alterações que fiz:

/**
*Continuação...
*
*/
        ImageIcon icon = new ImageIcon(image);
        {
            jLabelStar = new JLabel(icon, JLabel.CENTER);
            jLabelStar.setBounds(6, 6, 25, 25);
            jLabelStar.setLocation(131, 128);
            ujPanelTeste.addMouseListener(new MouseAdapter() {
                @Override
                public void mousePressed(MouseEvent e) {
                    moveLabel(e.getX(), e.getY());
                }
            });
            ujPanelTeste.addMouseMotionListener(new MouseAdapter() {
                @Override
            public void mouseDragged(MouseEvent e) {
                moveLabel(e.getX(),e.getY());
            }
        });
            ujPanelTeste.add(jLabelStar);
}
    public void moveLabel(int x, int y) {
            jLabelStar.setLocation(x,y);
            jLabelStar.repaint();
     }

Vou fechar esse tópico por já haver resolvido.
Mas abrirei outros com outras dúvidas e espero contar co mo auxílio de vocês.

Att.

Willer


#5