【发布时间】:2018-05-19 20:34:19
【问题描述】:
我正试图让这个 JLabel 移动,我尝试了所有方法和所有代码,但它不起作用。它似乎从来没有工作过,我把repaint() 放在任何有意义的地方,还有移动代码,但它似乎仍然无法以任何方式工作。我只是没有尝试使用导入的图像来做这件事,因为它也很难找到一个好的方法。
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
public class Move extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Move frame = new Move();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Move() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel label = new JLabel("");
label.setIcon(new ImageIcon(Move.class.getResource("/images/Untitled-2.png")));
label.setBounds(192, 130, 87, 58);
contentPane.add(label);
label.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent ke) {
if(ke.getKeyCode() == KeyEvent.VK_DOWN) {
label.setLocation(label.getX(),label.getY()+1);
label.repaint();
}
if(ke.getKeyCode() == KeyEvent.VK_UP) {
label.setLocation(label.getX(),label.getY()-1);
label.repaint();
}
if(ke.getKeyCode() == KeyEvent.VK_LEFT) {
label.setLocation(label.getX()+1,label.getY());
label.repaint();
}
if(ke.getKeyCode() == KeyEvent.VK_RIGHT) {
label.setLocation(label.getX()-1,label.getY());
label.repaint();
}
label.repaint();
}
});
}
}
【问题讨论】: