【问题标题】:Java Swing window not appearing in EclipseJava Swing 窗口未出现在 Eclipse 中
【发布时间】:2014-10-26 05:52:54
【问题描述】:

我在下面有这段代码来显示一个使用 Java Swing 的窗口。问题是当我在 Eclipse 中运行代码时,窗口不显示。当我将文件导出为可执行 JAR 文件并运行它时,它可以工作。 eclipse 是否存在阻止它从那里运行它的错误?

我错过了什么?

package com.gui;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.BorderLayout;

public class Calculator {

private JFrame frame;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Calculator window = new Calculator();
                window.frame.setVisible(true);
                
                
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public Calculator() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();
    //frame.setBounds(100, 100, 450, 300);
    frame.setSize(400, 200);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    JLabel lblNewLabel = new JLabel("Hello World");
    frame.getContentPane().add(lblNewLabel, BorderLayout.NORTH);
    
    
}

}

【问题讨论】:

  • 对我来说很好。确保 Eclipse 知道它应该运行这个类,而不是使用 main 方法的其他类
  • 是的,我在 Eclipse 中运行配置指向正确的程序和类。它只是启动并说它正在运行,但没有出现任何窗口。
  • 添加一些工作System.out.println 语句来跟踪进度,看看它是否未能达到给定点。尝试添加断点并调试它
  • 当我将它导出为可运行的 jar 文件然后运行它时它可以工作。知道为什么它在运行时不能在 Eclipse 中正常工作吗?
  • 听起来还是 eclipse 运行了错误的类...

标签: java eclipse swing jframe


【解决方案1】:

在 macOS 中由 Eclipse/WindowBuilder 创建的一些项目存在这个 window-not-showing-up 问题。

当通过 New > Project > WindowBuilder > SWT Designer > SWT/JFace Java Project 创建应用程序时,新项目会自动在类路径中包含几个额外的 jar 文件。某些 jar 文件在启动应用程序时触发 eclipse 在命令(ps aux | grep 查找)中使用特殊参数(-XstartOnFirstThread),而startOnFirstThread 在这里给我们带来了问题。 AFAIK,-XstartOnFirstThread 仅在 MacOS 中添加。

解决方案 1:不要使用“WindowBuilder > SWT Designer > SWT/JFace Java Project”来创建项目。你可以创建一个普通的 java 项目,然后添加你需要的东西。

解决方案 2:删除 jar 文件。右键单击项目>属性>构建路径>配置构建路径>库,删除org.eclipse.swt(在我的情况下删除这个就足够了,在你的情况下可能还有其他的)。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,这对我有用(在 stackoverflow 上的一些人的帮助下)。

    原来我遇到了图书馆问题。我已经从 jfreechart 导入了 .lib 目录中的所有 jar。实际上只需要两个,一些不必要的被标记为 swt 和实验性的。一旦我删除了所有不需要的,清理并重建,一切正常。

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

    不是 jfreechart 问题,显然是我自己的库导入问题。所以我建议你尝试删除一些可能有冲突的库,然后清理、构建并再次运行。祝你好运。

    【讨论】:

      【解决方案3】:

      有同样的问题,根本原因是构建路径中的额外 .jar(使用 macOS)。对我来说,删除 org.eclipse.swt.cocoa.macosx.x86_64_3*.jar too. 部分后它起作用了。

      【讨论】:

        猜你喜欢
        • 2010-09-17
        • 2013-10-16
        • 2014-11-15
        • 1970-01-01
        • 2011-01-06
        • 1970-01-01
        • 1970-01-01
        • 2021-08-10
        • 1970-01-01
        相关资源
        最近更新 更多