我正在尝试使用(Java + Eclipse + Swing)创建我的第一个GUI应用程序。这是我的代码:
import java.awt.*;
import javax.swing.*;
public class HelloWorldSwing extends JFrame {
JTextArea m_resultArea = new JTextArea(6, 30);
//====================================================== constructor
public HelloWorldSwing() {
//... Set initial text, scrolling, and border.
m_resultArea.setText("Enter more text to see scrollbars");
JScrollPane scrollingArea = new JScrollPane(m_resultArea);
scrollingArea.setBorder(BorderFactory.createEmptyBorder(10,5,10,5));
// Get the content pane, set layout, add to center
Container content = this.getContentPane();
content.setLayout(new BorderLayout());
content.add(scrollingArea, BorderLayout.CENTER);
this.pack();
}
//============================================================= main
public static void main(String[] args) {
JFrame win = new HelloWorldSwing();
win.setTitle("TextAreaDemo");
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
win.setVisible(true);
}
}
代码取自here。
当我从Eclipse运行应用程序时,会出现预期的窗口(所以,这很好。我看到了我想看到的内容)。但是,当我尝试关闭窗口或尝试在文本区域写一些东西时,程序会冻结。 OS告诉我程序没有响应(我在Ubuntu上试试)。
有人能帮我找到问题的原因吗?
提前感谢您的帮助。
答案 0 :(得分:1)
我确信这与代码没有关系,因为其他人已经发现代码在他们的机器上运行得很好 - 这指向机器特定的问题。在Eclipse中,确保将其设置为使用预期的JDK / JRE。然而,在担心Eclipse如何处理你的情况之前,我先用手工操作 - 特别是因为你有一个非常简单的类。
我会检查以确保您使用的是预期的编译器和运行时。在Linux上:
which javac
which java
如果它们都符合您的预期,请执行以下操作:
javac HelloWorldSwing.java
java HelloWorldSwing
如果你遇到类似的问题,那么你知道它不是Eclipse配置,而是其他东西。如果您没有使用最新的JDK,请升级到最新版本。如果你已经是最近的,它可能是一个显示驱动程序。其他JAVA挥杆程序在这台电脑上运行吗?我相信你可以在网上找到一些,下载一个已打包为jar的应用程序并尝试运行它。
答案 1 :(得分:0)
您是否尝试使用eventdispatcherthread来查看JFrame?
类似的东西:
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
createAndViewJFrame();
}
});
}
public void createAndViewJFrame(){
JFrame win = new HelloWorldSwing();
win.setTitle("TextAreaDemo");
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
win.setVisible(true);
}
然后您的框架将由swing调度程序线程显示。
希望它有所帮助,虽然我只是猜测...更新:正如评论者指出的那样,我调用了invokeLater()调用。我刚刚编辑了这篇文章来纠正这个问题。 Thanx去yishai& willcodejavaforfood指出来了!
坦率
答案 2 :(得分:-2)
你需要捕捉退出事件和 回复
System.exit( 0 );
你应该能够找到它 最常见的在线例子。
错误的东西......抱歉......咖啡......唉......