【问题标题】:Java SWT opening multiple windowsJava SWT 打开多个窗口
【发布时间】:2015-04-13 17:52:39
【问题描述】:

我有一个使用 Java SWT 小部件构建的 GUI,并且我正在尝试拥有多个窗口。从我的主要Shell,我创建了一个新的Shell,并将其作为其父级。在新窗口中,我有ButtonsLabels 并更新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 你说得对!我很粗心,这就是问题所在。

标签: java swt


【解决方案1】:

我没有正确理解您的问题,但我认为当您打开第二个窗口时,第一个窗口正在更新,而第二个窗口没有更改。如果这是你的问题,那么。尝试如下更改“打开”中的代码。这使第二个 shell 处于活动状态,并且在您关闭它之前,控件不会转到第一个 shell。

   public void open() {

      newShell.open();
       while (!newShell.isDisposed()) {
             if (!display.readAndDispatch()) {
                 display.sleep();
             }
         }
    }

【讨论】:

    【解决方案2】:

    不要尝试多次打开窗口,而是尝试 SWT 框架中的“向导”概念。使用“向导”,您也可以从一个页面导航到另一个页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-07
      • 2016-09-23
      • 1970-01-01
      • 2015-02-25
      • 2015-06-29
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多