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

时间:2014-03-24 05:33:57

标签: java swing jbutton jlabel

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

我所做的是创建一个扩展JPanel的类,使用图像,文件名和旋转/重置按钮设置JPanel。我有这个类的构造函数接受面板的编号(以跟上在面板中写入图像编号),要显示的图像文件,以及在Driver类中创建的Project对象(为了能够访问操作图像的方法)。我马上打电话给super();然后将文件名和图像(作为JLabel)和按钮设置为(JButtons)。

这是我的问题所在。我试图设置“旋转”按钮,因此我创建了一个匿名内部类动作侦听器和actionPerformed方法。我计划做的是使用Project对象引用来调用图像对象上的rotate方法,让它将BufferedImage返回到modifiedImage BufferedImage。然后使用原始图像删除JLabel,将modifiedImage添加为JLabel,重新验证并重新绘制。但是,我不能在内部actionPerformed类中使用this引用或Project对象的引用。

如何在actionperformed内部类中获得对这些引用的访问权限?或者我的设置完全糟糕?请耐心等待我 - 我第一次使用任何类型的GUI。

1 个答案:

答案 0 :(得分:1)

引用Project对象final。它将解决问题并且不会造成任何伤害,因为您不会再分配它。