昨天我真的很努力地去了解actionlistener。但它只适用于JComponent。你介意给我一些移动矩形位置的例子吗? 我知道如何覆盖框架和面板类。但我没有得到actionlistener的东西。 在Java API上,它说面板可以调用方法addmouselistener,我们也可以将参数传递给方法。我不知道(MouseListener l)是什么。顺便说一句,actionlistener和其他监听器之间的区别是什么(addmouselistener)。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Littlegame{
public static void main(String[]args)
{
Frame s = new Frame();
}
}
class Frame extends JFrame implements ActionListener
{
public Frame()
{
JFrame f = new JFrame("Little Game");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Panel a =new Panel();
f.add(a);
f.setSize(500,400);
f.setVisible(true);
}
}
class Panel extends JPanel{
public Panel()
{
setBorder(BorderFactory.createLineBorder(Color.green));
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawRect(150, 150, 30, 30);
g.setColor(Color.BLUE);
g.fillRect(150,150,30,30);
}
public void actionPerformed(ActionEvent e)
{
}
}
答案 0 :(得分:2)
首先阅读How to Write a Mouse Listener。
您的actionPerformed
方法无效,不是因为您没有附加任何会产生ActionEvent
的内容,而是因为您实际上没有实现ActionListener
接口。看看How to write an action listener。
它的长短是。
MouseListener
添加到Panel
。mousePressed
(或mouseReleased
或mouseClicked
(根据您的需要)被调用时,请使用MouseEvent
来确定事件发生的位置。MouseEvent
的位置
repaint
paintComponent
时,请使用记录MouseEvent
位置的实例变量并更新矩形。您可能还希望阅读Initial Threads