【问题标题】:How to put a text area (JTextArea) into a window (JFrame)?如何将文本区域(JTextArea)放入窗口(JFrame)?
【发布时间】:2010-01-31 14:29:10
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java user-interface textarea jframe


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      滚动窗格 scrollingArea 是在其中创建文本区域的。 scrollPane,由文本区域 m_resultArea 构成(请参阅 JScrollPaneconstructor 的文档)。然后添加到框架的内容窗格中。

      【讨论】:

        【解决方案3】:

        GUI 元素应在EDT 上构建。对于上面的程序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);
                }
            });
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-23
          • 1970-01-01
          • 2013-03-29
          • 1970-01-01
          • 2013-09-30
          • 1970-01-01
          相关资源
          最近更新 更多