如何通过按左右按钮移动球来制作? 这是代码:
private JPanel panel;
private JButton left;
private JButton right;
private Container c = getContentPane();
cycle() {
panel = new JPanel();
right = new JButton("RIGHT");
right.addActionListener(this);
left = new JButton("LEFT");
left.addActionListener(this);
c.add(panel);
panel.add(right);
panel.add(left);
}
public static void main(String[] args) {
JFrame f = new JFrame();
cycle ball = new cycle();
f.add(ball);
f.setTitle("Move the ball");
f.setSize(500, 500);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
@Override
public void paint(Graphics g) {
g.drawOval(150, 50, 150, 150);
g.setColor(Color.yellow);
}
@Override
public void actionPerformed(ActionEvent ae) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
答案 0 :(得分:0)
您可以使用KeyListener类。
特别是:
KeyListener#keyPressed(KeyEvent e);
和KeyListener#keyReleased(KeyEvent e);
例如,当按下左箭头键但尚未释放时,继续逐帧左移球。当钥匙被释放后,停止移动球。
通过这种方式获得的好处是,您可以同时处理多个按键,同时避免键盘重复率因用户而异。
编辑:我的错误,我想通过按钮你指的是键盘上的一把钥匙......
您可以使用MouseListener类。
,而不是使用KeyListener
如果您想使用JButton实现相同的功能,可以使用JButton#addMouseListener
并为其添加new MouseAdapter()
。您必须指定mousePressed()
和mouseReleased()
,就像我关于KeyListeners
的答案的前一部分一样。
以下是一个例子:
public JButton aButton;
...
...
public void static main (String... args) {
...
...
aButton.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
// Start doing stuff. In your case, going left or right.
// In this situation, it may be best to use a state variable like in the KeyListener example.
}
public void mouseReleased(MouseEvent me) {
// Stop doing stuff.
}
});
}