【问题标题】:Open a new JFrame打开一个新的 JFrame
【发布时间】:2013-02-16 12:36:08
【问题描述】:

我有一个主 JFrame,其中包含用于不同功能的各种面板,人们可以在其中计算事物。我想在用户点击第一个计算按钮时打开一个新的 JFrame 并用作输出窗口(如果您熟悉它们,则类似于 SPSS 输出窗口)。

New JFrame 将完全独立,并拥有自己的菜单栏...此处不适合使用简单的 JDialog。

【问题讨论】:

标签: java swing jframe


【解决方案1】:

我使用了代码JFrame frame = new JFrame(); frame.setVisible(true);。这段代码只是做空窗口。

【讨论】:

    【解决方案2】:
    • 无法抗拒,简单不同意答案JFrame frame = new JFrame();和frame.setVisible(true);

    我想在用户点击第一个计算时打开一个新的 JFrame 按钮并用作输出窗口(类似于 SPSS 输出窗口,如果 你熟悉它们)。

    • don't do that, create only two JFrames,重复使用第二个。 JFrame 使用 getContentPane.removeAll(),用于来自 JButton 的其他操作

    • 那么整个生命周期将只有setVisible(true) / setVisible(false)

    • DefaultCloseOperations 更改为HIDE_ON_CLOSE

    New JFrame 将完全独立,并拥有自己的菜单 酒吧。一个简单的 JDialog 不是这里的方法。

    • JDialog 有什么问题,Toolbar 中只有一个按钮,而 JFrame 中只有三个按钮,完全不同意,

    输出窗口(类似于 SPSS 输出窗口,如果您熟悉 他们)。

    • 使用SwingWorkerRunnable#Thread(需要包装到invokeLater)来获取放置在JDialog 中的JComponents 的值,如果所有更改都已完成,请调用JDialog.setVisible(true) 包装到invokeLater()

    【讨论】:

      【解决方案3】:

      切勿在 Swing 应用程序中使用多个 JFrame。使用JDialog 代替额外的窗口。

      The Use of Multiple JFrames, Good/Bad Practice?

      【讨论】:

      • 对于(几乎)每条规则都有一个例外——尽管指出它是件好事;)
      【解决方案4】:

      我可能误解了你的问题,但是

      JFrame frame = new JFrame();
      frame.setVisible(true);
      

      【讨论】:

      • 不是同一个问题,看cmets陛下@SLaks的回答
      • 这个问题会让人误解哈哈
      【解决方案5】:
      JFrame newFrame = new JFrame();
      newFrame.setVisible(true);
      

      【讨论】:

      • 请包装 setVisible(true);进入invokeLater
      • :-) 这是你的答案
      • @SLaks 在 Java 中,GUI 线程 (EDT) 与主线程不同。
      • @mkorbel 如果操作不在 EDT 上,那么两个语句都需要放在 InvokeLater 中;)
      • 在同一个 Swing 应用程序中拥有多个 JFrame 也是不好的做法,这就是我们拥有 JDialog 的原因。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多