0

我有一个工作代码,它创建一个带有文本区域的窗口。代码在这里。我试图弄清楚这段代码是如何工作的。很多事情都很清楚:

  1. 主方法创建 TextAreaDeom 类(它是 JFrame 的子类)的一个实例。换句话说,主方法创建了一个窗口。
  2. 在主方法中,我们设置了窗口的一些“参数”并使其可见。

我不清楚,我们将文本区域放在窗口中的哪个位置。我看到文本区域是在构造函数之前创建的。我还看到在构造函数中我们设置了文本区域(setText)的一些“参数”。我还看到在构造函数中我们创建了一个滚动区域并为其设置了一些参数。我看到滚动区域“连接”到文本区域(因为我们使用文本区域的实例来创建滚动区域)。我还看到我们创建了一个名为“内容”的对象(使用当前窗口)并将滚动区域“添加”到“内容”。

但是文本区域是在哪个位置添加到窗口中的呢?也许我可以说文本区域被添加到滚动区域并且滚动区域被添加到“内容”并且内容是窗口对象的一部分?

4

3 回答 3

2

在第 16 行,您创建了一个 JScrollPane,它环绕您的 JTextArea 对象。在第 21 行,您将包含您的 TextArea 的 JScrollPane 添加到 JFrame 的 ContentPane。当您调用 getContentPane() 而不是创建新的时,ContentPane 已经是 JFrame 的一部分。
ContentPane 的所有元素都将显示为 JFrame 的一部分。JFrame 的 add 方法只是为了方便,并将调用转发到 JFrames ContentPane。

于 2010-01-31T14:44:12.047 回答
0

滚动窗格scrollingArea是使用内部的文本区域创建的。scrollPane是用文本区域m_resultArea 构造的(请参阅JScrollPane构造函数的文档)。然后添加到框架的内容窗格中。

于 2010-01-31T14:45:47.393 回答
0

GUI 元素应该在EDT上构建。对于上面引用的程序,这是一种更可靠的main()方法。

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            JFrame win = new TextAreaDemo();
            win.setTitle("TextAreaDemo");
            win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            win.pack();
            win.setVisible(true);
        }
    });
}
于 2010-01-31T23:41:13.447 回答