Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从不同对象的arrayList中获取特定对象_Java_Oop_Arraylist_Interface_Drag And Drop - Fatal编程技术网

Java 从不同对象的arrayList中获取特定对象

Java 从不同对象的arrayList中获取特定对象,java,oop,arraylist,interface,drag-and-drop,Java,Oop,Arraylist,Interface,Drag And Drop,我有一个接口MyShape,我有3个类:MyLine、MyEllipse和MyRectangle 我有一个我形状的数组列表,当你在屏幕上画一个特定的形状时,它会被填满 右键单击形状时,应该能够在屏幕上拖动它。我想对右键单击的形状调用contains方法,查看事件坐标是否在范围内 我想做点什么,围绕着 for(int i = 0; i < shapes.size(); i++){ if(shapes.get(i).contains(e.getX(),e.getY()){

我有一个接口MyShape,我有3个类:MyLine、MyEllipse和MyRectangle

我有一个我形状的数组列表,当你在屏幕上画一个特定的形状时,它会被填满

右键单击形状时,应该能够在屏幕上拖动它。我想对右键单击的形状调用contains方法,查看事件坐标是否在范围内

我想做点什么,围绕着

for(int i = 0; i < shapes.size(); i++){
    if(shapes.get(i).contains(e.getX(),e.getY()){
        shapes.get(i).move(e.getX(),e.getY()){
    }
}
for(int i=0;i
但是shapes接口没有扩展任何内容,因此无法访问contains方法。我尝试将contains方法添加到接口中,然后通过在每个shape类中调用super类方法来重写它,但这也不起作用


总结一下我的问题。我如何在MyShape接口的列表上调用contains方法。或者子问题,我如何在索引I处获取特定类,并在该特定类上调用contains方法。

当您尝试添加
contains()时
to
MyShape
您是如何覆盖它的?您编写的代码是什么。因为您的想法似乎是对的,但是
contains()
方法在MyLine、MyEllipse和myrectangle中不起作用“'我已尝试将contains方法添加到接口,然后通过在每个形状类中调用super类方法来重写它,但也不起作用。'为什么不起作用,您遇到了什么错误?我尝试调用super();但不起作用。我试着调用此。contains(),我想这确实有效,但我相信这是一个堆栈溢出异常。我相信我也尝试了Ellipse2D.contains()。当您在
MyShape
中创建
contains()
方法时,您将需要实际实现
MyRectangle
上的功能,例如
如果(所有4个角内的x和y)
因此,在实际形状中,您将拥有界面中的方法,但完全实现,并具有计算它的逻辑,因为很明显,找出椭圆如何包含某些内容与矩形有很大不同。因此在侧面
MyShape
中,您将有类似于
公共布尔包含(int x,int y)的内容在您的其他形状中,
公共布尔包含(intx,inty){//code,以确定它是否包含}
当您尝试将
包含()
添加到
MyShape
时,您是如何覆盖它的?您编写的代码是什么。因为这似乎是您的想法正确,但是
包含()
方法在MyLine、MyEllipse和MyRectangle中不起作用,当您说“我尝试将contains方法添加到接口中,然后通过在每个shape类中调用super类方法来重写它,但也不起作用。”为什么不起作用,您遇到了什么错误?我尝试调用super();这不起作用。我尝试调用此.contains(),我认为它确实起作用,但我相信它会给我带来堆栈溢出异常。我相信在创建
contains()时,我也尝试了Ellipse2D.contains()
方法在
MyShape
中,您将需要实际实现
MyRectangle
上的功能,例如
if(所有4个角内的x和y)
因此,在实际形状中,您将拥有界面中的方法,但完全实现,并具有计算它的逻辑,因为很明显,找出椭圆如何包含某些内容与矩形有很大不同。因此在侧面
MyShape
中,您将有类似于
公共布尔包含(int x,int y)的内容;
在其他形状中,
公共布尔包含(intx,inty){//code以确定它是否包含}