我有一个看似简单的问题,但我无法弄清楚。
以下是我的问题的简化版本:
public void createContents() {
Composite dataCalcComposite = new Composite(shell, SWT.NONE);
dataCalcComposite.setBounds(0, 10, 279, 146);
}
public void repositionObjects() {
dataCalcComposite.setLocation(50, 10)
}
这不会起作用,因为repositonObjects
无法看到dataCalcComposite
变量。
我知道我可以通过在第一个方法中调用repostionObjects
并将变量作为参数传递来解决这个问题,但这是我的问题的一个非常简化的版本,需要重新定位的对象数量将是改变,所以我不认为这种方法会起作用。
另外,我无法对变量使用static
,我的IDE说只有final
可以使用它。
因此,如果无法对变量使用静态,我如何从其他方法访问它?
答案 0 :(得分:1)
您可以将声明Composite dataCalcComposite;
移到方法之外,因此该变量将成为实例变量。
....
private Composite dataCalcComposite;
public void createContents() {
dataCalcComposite = new Composite(shell, SWT.NONE);
dataCalcComposite.setBounds(0, 10, 279, 146);
}
public void repositionObjects() {
if (dataCalcComposite != null) {
dataCalcComposite.setLocation(50, 10)
}
}
....