【发布时间】:2015-04-13 17:52:39
【问题描述】:
我有一个使用 Java SWT 小部件构建的 GUI,并且我正在尝试拥有多个窗口。从我的主要Shell,我创建了一个新的Shell,并将其作为其父级。在新窗口中,我有Buttons 和Labels 并更新Labels 中的文本。出于某种原因,当创建第二个新窗口并返回第一个窗口时,第二个标签会更新,而不是当前窗口。我打开新窗口的方式是:
NewWindow newWindow = new NewWindow(mainShell, 1, 2);
newWindow.open();
NewWindow 类是:
public class NewWindow {
Shell newShell;
public NewWindow(Shell mainShell, int first, int second) {
newShell = new Shell(mainShell, SWT.CLOSE | SWT.TITLE | SWT.MIN);
newShell.setSize(629, 557);
newShell.setText("New Window");
newShell.setBackgroundMode(SWT.INHERIT_FORCE);
}
public void open() {
newShell.open();
}
public void close() {
newShell.setVisible(false);
}
}
传入的参数用于定义每个窗口中不同的窗口按钮和控件的参数。我一定是错过或搞砸了什么。 Java SWT Refresh Multiple Shells From Button 的答案看起来像是我可能需要实现的东西,但我在使用它时遇到了问题。我应该如何解决这个问题?
【问题讨论】:
-
我认为您的代码不足以让我们对这个问题发表任何意见。按钮和标签在哪里?
-
这只是一个sn-p。实际的代码真的很长。按钮和标签是 NewWindow 中的私有静态字段,在创建新 Shell 后创建
-
如果它们是
static,那么它们只有一个实例,并且您的所有窗口都在更改相同的标签和按钮。它们可能不应该是静态的。但是如果没有看到更多代码,我们不能肯定地说。 -
@greg-449 你说得对!我很粗心,这就是问题所在。