![](/img/trans.png)
[英]Java program in Eclipse Mars, immediately terminates with no output?
[英]Program terminates immediately when GUI's are involved
尝试在Eclipse中运行以下代码时,它几乎立即终止,没有消息(仅退出值为-1073740940),但是任何不包含GUI元素的Java代码都可以正常运行。 使用调试器运行时,它到达“新的Runnable”行,然后终止,但GUI窗口从不显示。 GUI之前工作得很好,但是它们在某个时候停止工作了,我不知道为什么。
import java.awt.*;
import javax.swing.*;
public class Test {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Wat wat = new Wat("Test");
wat.init();
System.out.println("wat");
}
});
}
}
@SuppressWarnings("serial")
class Wat extends JFrame {
public Wat(String title) {
super(title);
}
public void init() {
JPanel p = new JPanel();
this.setContentPane(p);
p.add(new JLabel("Why?"));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(600, 500);
this.setVisible(true);
}
}
main方法的代码应如下所示
public class Test {
public static void main(String[] args) {
Wat wat = new Wat("Test");
wat.init();
System.out.println("wat");
}
}
只需在主线程上运行UI代码。 使用单独的线程进行从UI开始的长时间运行的操作。 请参阅SwingWorker教程。
我在Wat类的init方法中切换了几行,并向Wat类添加了serialVersionUID。
每次我运行此代码时,都会启动一个GUI。
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Test {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
Wat wat = new Wat("Test");
wat.init();
System.out.println("wat");
}
});
}
}
class Wat extends JFrame {
private static final long serialVersionUID =
8993350484858673399L;
public Wat(String title) {
super(title);
}
public void init() {
JPanel p = new JPanel();
p.add(new JLabel("Why?"));
this.setContentPane(p);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(600, 500);
this.setVisible(true);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.