我如何运行Java程序?

时间:2014-12-08 16:09:53

标签: java user-interface jar

我试图让它工作,我错过了一个代码,使它能够在窗口显示gui, 或者我需要某种Java来运行它?

这是我的代码:

package math;

import java.awt.EventQueue;
import javax.swing.JFrame;

public class Main {
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    JFrame window = new JFrame();
                    window.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

4 个答案:

答案 0 :(得分:0)

主窗口部分没有意义

替换你的try-block

 try {
            Main window = new Main();
            window.frame.setVisible(true);
        } 

 try {
            initialize();
            frame.setVisible(true);
        } 

答案 1 :(得分:0)

你必须在构造函数中设置框架。

private void initialize() {
    frame = new JFrame();
    frame.setVisible(true);
    frame.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

答案 2 :(得分:0)

您的代码编译并运行正常。 (虽然将setVisible命令放在initialize方法中更合适。)

好像你无法正确导出它。我用NetBenas导出你的代码,我可以通过双击它来运行它。尝试使用NetBenas导出您的课程(这样会更容易)。

如果您没有NetBeans并通过命令行创建jar文件,请检查您的清单文件。确保您提供了正确的主方法名称。

答案 3 :(得分:0)

上面的代码运行正常。它可能适合你,但你没有意识到,因为创建的窗口非常小。也可能是您尝试将其导出到.jar文件中,但未在清单中指定Main-Class应该是什么。根据您使用的IDE或构建工具,方式可能会有所不同。也可能是你根本不知道如何运行这些代码,即编译和运行Java代码。在这种情况下,您需要了解Java SDK中包含的javacjava

如果使用Java 8,实际上可以简化代码。您不需要打印堆栈跟踪的异常处理程序,EventQueue已经为您执行此操作。

package math;

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

public class Main {
    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            JFrame window = new JFrame();
            window.setVisible(true);
        });
    }
}

或者,如果代码是单独的方法:

package math;

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

public class Main {
    public static void main(String[] args) {
        EventQueue.invokeLater(Main::initUI);
    }

    private static void initUI() {
        JFrame window = new JFrame();
        window.setVisible(true);
    }
}

如果initUI()是一个实例方法,你可以这样做:

package math;

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

public class Main {
    public static void main(String[] args) {
        new Main();
    }

    Main() {
        EventQueue.invokeLater(this::initUI);
    }

    private void initUI() {
        JFrame window = new JFrame();
        window.setVisible(true);
    }
}