Перемещение изображения мышью - Java
Формулировка задачи:
Здравствуйте. Я пытаюсь добиться перемещения изображения мышью, нашел код, который данную задачу выполняет. Но при запуске это изображение во-первых движется не точно за мышью, а лишь в ее сторону. А во-вторых при движении изображение дергается. Не могли бы вы подсказать в чем может быть проблема?
Листинг программы
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseMotionListener;
- import java.io.File;
- public class SampleImage extends JFrame {
- public SampleImage() throws HeadlessException {
- setTitle("Sample Drag and Drop Image");
- setSize(new Dimension(800,600));
- setLayout(null);
- File file = new File("mallet.png");
- final JLabel label = new JLabel();
- label.setBounds(10, 10, 50, 50);
- label.setIcon(new ImageIcon(file.getAbsolutePath()));
- add(label);
- label.addMouseMotionListener(new MouseMotionListener() {
- @Override
- public void mouseDragged(MouseEvent e) {
- label.setLocation(e.getX(),e.getY());
- }
- @Override
- public void mouseMoved(MouseEvent e) {
- }
- });
- }
- public static void main(String[] args) {
- JFrame frame = new SampleImage();
- frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
- frame.setVisible(true);
- }
- }
Решение задачи: «Перемещение изображения мышью»
textual
Листинг программы
- import java.awt.Component;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import java.awt.event.MouseMotionListener;
- import javax.swing.*;
- /**
- *
- * @author Nicholas White
- */
- public class SampleImage extends JFrame {
- public SampleImage() {
- JLabel label = new JLabel(new ImageIcon("C:/Users/Пользователь/Documents/NetBeansProjects/SampleImage/build/classes/sampleimage/king_black.png"));
- JFrame frame = new JFrame();
- frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
- frame.setContentPane(new MyPanel(label));
- frame.setSize(600, 400);
- frame.setVisible(true);
- }
- public static void main(String[] args) {
- new SampleImage();
- }
- }
- class MyPanel extends JPanel implements MouseListener, MouseMotionListener{
- int prevX, prevY;
- JLabel label;
- public MyPanel(JLabel label) {
- this.label = label;
- addMouseMotionListener(this);
- addMouseListener(this);
- add(label);
- }
- @Override
- public void mouseClicked(MouseEvent e) {
- }
- @Override
- public void mousePressed(MouseEvent e) {
- prevX = label.getX() - e.getX();
- prevY = label.getY() - e.getY();
- Component c = e.getComponent();
- if(c instanceof JLabel){
- updateLocation(e);
- }
- }
- @Override
- public void mouseReleased(MouseEvent e) {
- Component c = e.getComponent();
- if(c instanceof JLabel){
- updateLocation(e);
- }
- }
- @Override
- public void mouseEntered(MouseEvent e) {
- }
- @Override
- public void mouseExited(MouseEvent e) {
- }
- @Override
- public void mouseDragged(MouseEvent e) {
- updateLocation(e);
- }
- @Override
- public void mouseMoved(MouseEvent e) {
- }
- private void updateLocation(MouseEvent e) {
- label.setLocation(prevX + e.getX(), prevY + e.getY());
- repaint();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д