Java JFrame 窗口在从 Eclipse 运行时不显示

2022-09-04 21:41:41

一个非常简单的问题。我尝试运行一个非常简单的演示来创建和显示 Eclipse 中的窗口框架,但没有任何反应。没有错误,没有窗口,代码运行到完成。

我添加了断点,并确保代码按预期运行。代码直接来自Java教程(FrameDemo),我只是重命名了包以适应我放置它的位置(这个包中的其他代码运行良好):

package ui;

import java.awt.*;
import javax.swing.*;

/* FrameDemo.java requires no other files. */
public class FrameDemo {
    /**
     * Create the GUI and show it.  For thread safety,
     * this method should be invoked from the
     * event-dispatching thread.
     */
    private static void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("FrameDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JLabel emptyLabel = new JLabel("");
        emptyLabel.setPreferredSize(new Dimension(175, 100));
        frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);

        //Display the window.
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}

我的设置(开普勒 SR2):

  • eclipse.buildId=4.3.2.M20140221-1700
  • java.version=1.8.0_05
  • java.vendor=Oracle Corporation
  • BootLoader 常量:OS=macosx,ARCH=x86_64,WS=cocoa,NL=en_US
  • Framework arguments: -product org.eclipse.epp.package.java.product -keyring /Users/steve/.eclipse_keyring -showlocation
  • 命令行参数: -os macosx -ws cocoa -arch x86_64 -product org.eclipse.epp.package.java.product -keyring /Users/steve/.eclipse_keyring -showlocation

我还检查了配置->错误日志;仍然没有,没有错误。我尝试了其他类似的演示,相同的结果。

任何帮助将不胜感激,因为我已经被困在这个上面一天多了。


答案 1

事实证明,我有一个图书馆问题。我已经从jfreechart导入了.lib目录中的所有jar。实际上只需要两个,一些不必要的被标记为swt和实验。一旦我删除了所有不需要的,做了一个干净的,并重建,一切都很好。

奇怪的是,将jfreechart库(包括冲突的jar)的顺序更改为底部没有帮助,必须删除额外的jar。

不是jfreechart问题,显然是我自己的库导入问题。如果您遇到这种情况,我建议您尝试删除一些可能冲突的库,然后清理,构建并再次运行。

感谢《气垫船充满鳗鱼》和其他所有帮助我的人。


答案 2

macOS + Eclipse + swt.jar给出了这个问题。

事实证明,在 macOS 中,Eclipse 在启动 GUI 应用程序时添加了一个特殊参数,前提是类路径中有 swt.jar。从外部库(用于构建类路径)中删除 swt.jar 后,问题解决了。-XstartOnFirstThread