2010-01-31 60 views
0

我有一個工作代碼,它創建一個文本區域的窗口。代碼是here。我試圖弄清楚這個代碼是如何工作的。很多事情都很清楚:如何將文本區域(JTextArea)放入窗口(JFrame)?

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

我不清楚,我們把文本區放在窗口的哪個位置。我發現文本區域是在構造函數之前創建的。我還看到,在構造函數中,我們設置了文本區域(setText)的一些「參數」。我也看到在構造函數中我們創建了一個滾動區域併爲它設置了一些參數。我看到滾動區域與文本區域「連接」(因爲我們使用文本區域的實例來創建滾動區域)。我還看到我們創建了一個名爲「內容」的對象(使用當前窗口),並將滾動區域「添加」到「內容」。

但是在哪個位置文本區域被添加到窗口?也許我可以說文本區域被添加到滾動區域並且滾動區域被添加到「內容」並且內容是窗口對象的一部分?

回答

2

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

0

滾動窗格滾動區域是在文本區域內部創建的。 scrollPane,構建爲文本區域m_resultArea(請參閱JScrollPane的文檔constructor的文檔)。然後被添加到框架的內容窗格中。

0

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