【发布时间】:2014-03-24 05:33:56
【问题描述】:
我正在为 CS 课程做一个项目,所以我不能发布任何代码,但我会尽力描述我的设置。该程序应该有 3 个独立的 JPanel,每个 JPanel 都有一个图像和用于旋转和重置图像的按钮。提供了一个 Driver 类来设置 JFrame,创建单个 Project 对象以传递给其他类(该 Project 类包含旋转和组合图像的方法),并具有 main 方法。
我所做的是创建一个扩展 JPanel 的类,以设置一个带有图像、文件名和旋转/重置按钮的 JPanel。我有这个类的构造函数,其中包含面板的编号(以跟上在面板中写入图像编号)、要显示的图像文件以及在 Driver 类中创建的 Project 对象(以便能够访问处理图像的方法)。我立即调用 super();然后将文件名和图像(作为 JLabel)和按钮设置为(JButtons)。
这就是我的问题所在。我正在尝试设置 Rotate 按钮,因此我创建了一个匿名内部类操作侦听器和 actionPerformed 方法。我计划做的是使用 Project 对象引用来调用图像对象的旋转方法,让它返回一个 BufferedImage 到一个 modifiedImage BufferedImage 中。然后用原图去掉JLabel,将modifiedImage添加为JLabel,重新验证,重绘。但是,我不能在内部 actionPerformed 类中使用 this 引用或对 Project 对象的引用。
如何在 actionperformed 内部类中访问这些引用?还是我的设置完全糟糕?请多多包涵——这是我第一次使用任何类型的 GUI。
【问题讨论】:
-
“如何在 actionperformed 内部类中访问这些引用?” 将您尝试引用的对象设为
final或将其设为全局类成员。 -
“我正在为 CS 课程做一个项目,所以我不能发布任何代码” - 这就是 MCTREs 的用途。