Java Swing窗口没有出现在Eclipse中

时间:2014-09-02 03:22:55

标签: java eclipse swing jframe

所有

我在下面使用此代码来显示使用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);


}

}

2 个答案:

答案 0 :(得分:1)

在macOS中,Eclipse / WindowBuilder创建的某些项目存在此窗口未显示的问题。

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

解决方案1:不要使用“ WindowBuilder> SWT Designer> SWT / JFace Java项目”来创建项目。您可以只创建一个常规的Java项目,然后添加所需的内容。

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

答案 1 :(得分:0)

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

事实证明我有图书馆问题。我从jfreechart导入了.lib目录中的所有jar。实际上只需要两个,一些不必要的标记为swt和experimental。一旦我删除了所有不需要的东西,干净,重建,一切都运行正常。

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

不是jfreechart问题,显然是我自己的库导入问题。因此,我建议您尝试删除一些可能存在冲突的库,然后再清理,构建和运行。祝好运。