Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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 如何访问匿名内部actionListener类和actionPerformed方法中的局部变量?_Java_Swing_Jbutton_Jlabel - Fatal编程技术网

Java 如何访问匿名内部actionListener类和actionPerformed方法中的局部变量?

Java 如何访问匿名内部actionListener类和actionPerformed方法中的局部变量?,java,swing,jbutton,jlabel,Java,Swing,Jbutton,Jlabel,我正在为CS类做一个项目,所以我不能发布任何代码,但我会尽力描述我的设置。该程序应该有3个独立的JPanel,每个JPanel都有一个图像和用于旋转和重置图像的按钮。提供了一个驱动程序类,用于设置JFrame,创建单个项目对象以传递给其他类(此项目类包含旋转和组合图像的方法),并具有main方法 我所做的是创建一个类来扩展JPanel,用图像、文件名和旋转/重置按钮来设置JPanel。我有这个类的构造器,它包含面板的编号(以便在面板中写入图像编号)、要显示的图像文件以及在驱动程序类中创建的项目对

我正在为CS类做一个项目,所以我不能发布任何代码,但我会尽力描述我的设置。该程序应该有3个独立的JPanel,每个JPanel都有一个图像和用于旋转和重置图像的按钮。提供了一个驱动程序类,用于设置JFrame,创建单个项目对象以传递给其他类(此项目类包含旋转和组合图像的方法),并具有main方法

我所做的是创建一个类来扩展JPanel,用图像、文件名和旋转/重置按钮来设置JPanel。我有这个类的构造器,它包含面板的编号(以便在面板中写入图像编号)、要显示的图像文件以及在驱动程序类中创建的项目对象(以便能够访问处理图像的方法)。我立刻叫超级();然后将文件名和图像(作为JLabel)以及按钮设置为(JButtons)

这就是我的问题所在。我试图设置Rotate按钮,所以我创建了一个匿名内部类action侦听器和actionPerformed方法。我计划做的是使用Project对象引用调用image对象上的rotate方法,让它将buffereImage返回到modifiedImage buffereImage中。然后移除带有原始图像的JLabel,将modifiedImage添加为JLabel,重新验证并重新绘制。但是,我不能在内部actionPerformed类中使用this引用或对项目对象的引用


如何在actionperformed内部类中访问这些引用?还是我的设置太糟糕了?请容忍我-这是我第一次使用任何类型的GUI。

请参考
项目
对象
最终版
。它将解决问题,不会造成任何伤害,因为您不会再次分配它。

“如何在actionperformed内部类中访问这些引用?”将您尝试引用的对象设为最终对象,或者将其设为全局类成员。“我正在为CS类做一个项目,所以我不能发布任何代码”-这就是我的目的。是的,我见过有人建议这样做,但我不认为(尽管我可能是错的)我的程序可以做到这一点。驱动程序类部分是用已经声明为project=new project()的项目对象预先制作的;在设置ImagePanel构造函数时,我让它传入一个项目对象。因此,在驱动程序类中调用ImagePanel构造函数时,我在那里传入了项目对象。因此,它可以在ImagePanel类中访问,但不能在actionPerformed内部类中访问。我不能将对象的创建更改为final,但是否应该将其设置为final其他地方?对我来说,让项目中的方法保持静态是最有意义的,因为它们所做的只是修改图像,但不管出于什么原因,教授并不是这样设置的