0
我想製作一個GUI程序,當我按下鼠標按鈕時,將標籤移動到按下的X的位置, Y地點。我做到了,這很容易,但我想現在就像一個緩慢移動的效果。我試圖用thread.sleep()
這樣做,但它沒有奏效。你能幫我提出一些想法或代碼嗎?這是我的代碼:如何用swing在一個JAVA中移動一個標籤(圖片)點擊鼠標的位置
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) {
}
});
}
}
,這裏是我的形象使用:
我會建議使用此計時器。這樣你就可以將速度調整到任何你想要的。 – DevilsHnd
你能告訴我如何在我的代碼中做到這一點,或編輯一些簡單例子的代碼。 – drage503