我有一个看似简单的问题,但无法解决。

这是我的问题的简化版本:

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可以使用它。

因此,不能在变量上使用static,如何从另一种方法访问它呢?

最佳答案

您可以将声明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)
  }
}
....

10-05 21:52