【发布时间】:2010-02-17 15:02:27
【问题描述】:
我正在尝试使用 (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 运行应用程序时,会出现预期的窗口(所以,这很好。我看到了我想看到的)。但是,当我尝试关闭窗口或尝试在文本区域中写入内容时,程序会冻结。操作系统告诉我程序没有响应(我在 Ubuntu 上尝试过)。
谁能帮我找出问题的原因?
提前感谢您的帮助。
【问题讨论】:
-
我尝试了提供的代码,它工作正常......你还有什么其他的吗?注释掉构造函数的内容得到一个空的
JFrame,然后尝试关闭它是否有效? -
这与代码无关。它在我的 Windows 机器上运行良好。按预期关闭并写入。你不是在使用 beta jvm 之类的吗?
-
我试着注释这行代码:content.add(scrollingArea, BorderLayout.CENTER);我仍然有同样的问题。出现一个空窗口,它也不响应。
-
Oso,我认为(我不确定)问题是在我安装 Eclipse 后出现的。在此之前,我能够编译和执行(都从命令行)给定的代码。我在 Ubuntu 上通过“sudo get-apt”获得了 Java 开发工具包。所以,我认为它应该是一个经过测试且稳定的版本。
-
从命令行运行它是否有效?我用“javac HelloWorldSwing.java”编译它并用“java HelloWorldSwing”运行它,它在 Ubuntu、Mac OS X 和 Debian 上运行良好。
标签: java eclipse user-interface swing freeze