簡體   English   中英

如何將文本區域(JTextArea)放入窗口(JFrame)中?

[英]How to put a text area (JTextArea) into a window (JFrame)?

我有一個工作代碼,該代碼創建一個帶有文本區域的窗口。 代碼在這里 我試圖弄清楚這段代碼是如何工作的。 很多事情很清楚:

  1. 主方法創建TextAreaDeom類(它是JFrame的子類)的實例。 換句話說,主方法創建一個窗口。
  2. 在主要方法中,我們設置了窗口的一些“參數”並使其可見。

我不清楚,我們將文本區域放在窗口的哪個位置。 我看到該文本區域是在構造函數之前創建的。 我還看到,在構造函數中,我們設置了文本區域(setText)的一些“參數”。 我還看到在構造函數中,我們創建了一個滾動區域並為其設置了一些參數。 我看到滾動區域已“連接”到文本區域(因為我們使用文本區域的實例來創建滾動區域)。 我還看到,我們創建了一個名為“內容”的對象(使用當前窗口),並將滾動區域“添加”到“內容”中。

但是,在哪個位置將文本區域添加到窗口? 可以說文本區域被添加到滾動區域中,而滾動區域被添加到“內容”中,並且內容是窗口對象的一部分嗎?

在第16行中,您將創建一個JScrollPane,該JScrollPane包裹了您的JTextArea對象。 在第21行上,將此JScrollPane添加到JFrame的ContentPane中,該JScrollPane包含TextArea。當您調用getContentPane()而不是創建新的JScrollPane時,ContentPane已成為JFrame的一部分。
ContentPane的所有元素都將顯示為JFrame的一部分。 JFrame的add方法只是為了方便起見,並將調用轉發到JFrames ContentPane。

滾動窗格scrollingArea是使用內部文本區域創建的。 scrollPane是使用文本區域m_resultArea構造的 (請參見JScrollPane構造函數的文檔)。 然后將其添加到框架的內容窗格。

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);
        }
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM