我试图让它工作,我错过了一个代码,使它能够在窗口显示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();
}
}
});
}
}
答案 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中包含的javac
和java
。
如果使用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);
}
}