gpt4 book ai didi

java - 如何在JAVA中用swing缓慢(像效果)移动标签(图像)到鼠标点击位置

转载 作者:行者123 更新时间:2023-12-01 10:44:54 25 4
gpt4 key购买 nike

我想制作一个 GUI 程序,当我按下鼠标按钮时,将标签移动到按下的 X 和 Y 位置。我这样做了,这很简单,但我现在想把它变成一个缓慢移动的效果。我尝试使用 thread.sleep() 来完成此操作,但没有成功。你能帮我提供想法或代码吗?这是我的代码:

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

public class jGame extends JFrame {

private JPanel contentPane;

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
jGame frame = new jGame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

public jGame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 568, 459);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));

JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.CENTER);

JLabel robot = new JLabel("");
robot.setIcon(new ImageIcon("/home/ubuntu/Desktop/robot.png"));
panel.add(robot);
panel.addMouseListener(new MouseListener() {

@Override
public void mouseClicked(MouseEvent e) {
robot.setLocation(e.getX() - 25, e.getY() - 40);
}

@Override
public void mouseReleased(MouseEvent e) {

}

@Override
public void mousePressed(MouseEvent e) {

}

@Override
public void mouseExited(MouseEvent e) {

}

@Override
public void mouseEntered(MouseEvent e) {

}
});
}

}

这是我使用的图像:
robot

最佳答案

写作是乐趣的一半......

  1. startPointnextStep 存储为 Points
  2. 初始化 javax.swing.Timer
  3. 当用户点击时,保 stub startPoint,将nextStep设置为鼠标位置并调用timer.start()
  4. Timer.actionPerformed() 需要在返回到 startPoint 时计算 nextStep 点。
  5. 如果startPoint等于nextStep调用timer.stop()

关于java - 如何在JAVA中用swing缓慢(像效果)移动标签(图像)到鼠标点击位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34246068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com