如何将文本区域(JTextArea)放入窗口(JFrame)?

时间:2010-01-31 14:29:11

标签: java user-interface textarea jframe

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

  1. main方法创建TextAreaDeom类的实例(它是JFrame的子类)。换句话说,main方法创建一个窗口。
  2. 在main方法中,我们设置窗口的一些“参数”并使其可见。
  3. 我不清楚,我们将文本区域放在窗口中的哪个位置。我看到文本区域是在构造函数之前创建的。我还看到在构造函数中我们设置了文本区域的一些“参数”(setText)。我还看到在构造函数中我们创建了一个滚动区域并为其设置了一些参数。我看到滚动区域“连接”到文本区域(因为我们使用文本区域的实例来创建滚动区域)。我还看到我们创建了一个名为“content”的对象(使用当前窗口),我们将滚动区域“添加”到“内容”。

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

3 个答案:

答案 0 :(得分:2)

在第16行中

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

应在EDT上构建GUI元素。对于上面的程序cited,这是一种更可靠的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);
        }
    });
}