【问题标题】:Why is my JFrame not visible when running my Java application in eclipse?为什么在 Eclipse 中运行我的 Java 应用程序时我的 JFrame 不可见?
【发布时间】:2014-07-13 10:39:09
【问题描述】:

您好,感谢您查看我的问题。 在 Eclipse 中开发 Swing 应用程序时,我面临以下问题: 当我尝试启动一个简单的 Swing JFrame 应用程序(例如,由窗口生成器之类的 gui 生成器或从我的编程手册中的小示例生成)时,程序将运行而没有任何错误,但 JFrame 不可见。当然,这些示例使 JFrame 在末尾可见

Framename.setVisible(true).

我认为问题出在 Eclipse 中,因为当我在 Eclipse 中生成此应用程序的可运行 jar 并在 Eclipse 之外运行它时,JFrame 将按预期显示。这种行为发生在我测试过的所有示例中。你有提示我如何解决这个问题吗? 提前致谢 理查德。

--

编辑:我自己解决了我的问题,但我不明白为什么会这样: 当 Swing 应用程序位于引用了 SWT/JFace 库 (1) 的项目中时,它们似乎不起作用。一旦我删除了这些引用,或者将类移动到另一个项目,该类就会恢复工作。这种行为有什么好的理由吗?

【问题讨论】:

  • 您确定框架没有出现在 Eclipse IDE 后面吗?运行应用程序时,是否显示 Java 进程(在 Window 底部栏的按钮上)?你有一个框架设置的例子吗?
  • 是的,我仔细检查了 IDE 后面没有窗口(我正在使用 OS X 10.9.4 的 MBP 上开发)。该进程仍在运行,但未显示任何窗口。我现在隔离了有问题的 jar 库:当我删除库 org.eclipse.swt.cocoa.macosx.x86_64.jar 时,将显示 JFrame!但是为什么这个库在这种情况下会出现问题呢? JFrame 来自 swing,而不是来自 SWT。
  • 实现和调试的问题属于 Stack Overflow 的问题(已经有投票就地迁移,请不要转发问题)。请阅读help center 以更好地了解哪些问题适合 P.SE 以及它与 Stack Overflow 有何不同。指南的粗略近似是 P.SE 适用于您在白板前遇到设计问题时,而 SO 适用于您在 IDE 前时。

标签: java eclipse swing


【解决方案1】:

如果你扩展了MyClassName extends JFrame,你需要使用 setVisible(true)
您也可以在应用程序准备启动时使用它,这种行为更容易接受:

EventQueue.invokeLater(new Runnable(){
public void run(){
new MyClassName().setVisible(true);
}
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 2023-03-05
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    相关资源
    最近更新 更多