我有一个 Ball 类,我想扩展 JComponent 并实现 mouseListener。
public class Ball extends JComponent implements MouseListener {
Int x, y, radius;
public Ball(int X, int Y, int Radius){
//contains only three ints and redefines x,y,radius
x=X;
y=Y;
radius=Radius;
}
public void draw(Graphics g){
//draw oval using x,y,radius
}
//5 mouselisteners undefined yet
}
所以 ball 是框架内面板使用的构造函数。
抱歉,我还没有输入所有代码。我将很快提交完整的代码。
所以我要做的是在球类中使用 MouseEntered 监听器,以便当鼠标进入组件(球/椭圆形)时。 但我不知道如何定义该组件以便它知道它已被输入。 需要一些尺寸吗?因为我所做的只是在面板中使用绘图功能。
最佳答案
如果这是我的类,我不会让它扩展 JComponent,也不会为其提供 MouseListener 或 MouseMotionListener,特别是当我想在单个 JComponent 中显示多个球时。相反,我会给它提供公共(public)方法,允许其他类获取其边界(例如可以从 Shape 接口(interface)获取),以及形状中是否包含某些内容(Shape 接口(interface)对此也很有效),以及其他公共(public)方法允许外部类更改此对象的状态(外观?)的方法。
然后我会让 JComponent 持有一个 Ball 或 ArrayList<Ball>
,并在此 JComponent 的 MouseListener/MouseMotionListener/MouseAdapter 中,迭代 ArrayList<Ball>
查看鼠标是否在任何球的内部,如果是,则更改该球的状态。然后在 JComponent 的 PaintComponent 方法中,我将迭代 ArrayList<Ball>
调用draw(g)
在每个包含的球上。
关于java - 如何定义 java 组件以便它与鼠标监听器一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9397431/