[英]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.