我正在试图保存.PNG图像的JFrame。在JFrame中,我有两个Plot3DPanel对象。最可能的原因是由于同步错误,在保存.PNG时,左边大小的帧是不可见的.

因此,我使用以下代码:
try
{
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
new VisualSerializer(P[i], Q[i], folder + "C" + i).run();
}
});
serialize(P[i], folder + "P" + i);
serialize(Q[i], folder + "P" + i);
}
catch(Exception e)
{
e.printStackTrace();
}但是现在,我得到了编译错误
不能引用在不同方法中定义的内部类中的非最终变量i。
但是,我需要我的文件名不同。此外,我还需要遍历我的对象数组。我能做些什么来防止这个错误?
发布于 2014-04-21 16:21:55
一种方法是对需要传递到匿名内部类的任何变量进行最终副本,例如,如果i是问题所在:
final int index = i;
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
new VisualSerializer(P[index], Q[index], folder + "C" + index).run();
}
});另一种解决方案是在匿名内部类中使用类字段。
发布于 2014-04-21 16:26:23
你有两个选择:
发布于 2017-07-26 17:03:41
来自OP的解决方案。
发现了错误!这里是正确的修改:
final int index = i;
SwingUtilities.invokeAndWait
(
new VisualSerializer(P[index], Q[index], folder + "C" + index)
);一个新的Runnable是多余的。该类已经是Runnable的类型。
https://stackoverflow.com/questions/23201275
复制相似问题