我有下面的代码来使用 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);
}
}
最佳答案
在 macOS 中使用 Eclipse/WindowBuilder 创建的某些项目存在窗口不显示的问题。
通过“新建”>“项目”>“WindowBuilder”>“SWT 设计器”>“SWT/JFace Java 项目”创建应用程序时,新项目会自动在类路径中包含几个额外的 jar 文件。某些 jar 文件会触发 eclipse 在启动应用程序时在命令中使用特殊参数 (-XstartOnFirstThread
)(ps aux | grep
来查找),并且 startOnFirstThread
给我们带来了问题。 AFAIK,-XstartOnFirstThread
仅在 MacOS 中添加。
解决方案 1:不要使用“WindowBuilder > SWT Designer > SWT/JFace Java Project”来创建项目。您可以创建一个常规的 java 项目,然后添加您需要的内容。
解决方案 2:删除 jar 文件。右键单击项目>属性>构建路径>配置构建路径>库,删除org.eclipse.swt(在我的情况下删除这个就足够了,在您的情况下可能还有其他)。
关于Java Swing 窗口未出现在 Eclipse 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25615366/