Java Swing 窗口未出现在 Eclipse 中

标签 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);
    
    
}

}

最佳答案

在 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/

相关文章:

java - 根据日期条件从mysql数据库表中获取数据

java - 如何存储1000行及之后执行批处理?

python - PyDev 代码分析在 Aptana Studio 中不起作用

java - Sinthatica 与 JFrame 调整大小

java - jtextarea 数组的声明问题

java - 带有 hibernate 条件 API 的 MySQL 中的 Orderby Timestamp 列抛出错误

java - 将图像上传到 android 中的 azure blob 存储时出现 nullpointerException

java - 无法从内部 try/catch 循环 Lambda 表达式 Java 抛出异常

java - Eclipse 插件开发 - ClassCastException 无法将 abc.xyz 转换为 abc.xyz

java - JavaFX 中 StackPane 上的 BufferedImage