2012-12-20 146 views
1

當我註釋掉frame.add(隱藏)時,它只顯示文本區域。當我不評論它時,它只會顯示一個灰色的灰色框,並帶有灰色的滾動條。爲什麼JScrollPane無法正常工作?

import java.util.Scanner; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextArea; 
import javax.swing.JScrollPane; 
import java.awt.GridLayout; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 

public class Panlindrome{ 
    public Panlindrome(){ 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setTitle("Panlindrome?"); 
     frame.setSize(240,320); 
     //frame.setLayout(new GridLayout(3,1)); 

     JTextArea inputText = new JTextArea(30,1); 
     inputText.setLineWrap(true); 

     JScrollPane hidden = new JScrollPane(inputText); 
     hidden.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 

     frame.add(inputText); 
     //frame.add(hidden); 

     frame.setVisible(true); 
    } 

    public static void main(String[] args){ 
     Panlindrome check = new Panlindrome(); 
    } 
} 
+2

自從我使用Java以來​​已經有一段時間了。我認爲這是因爲您只能將Swing小部件添加到一個父項;因此,當您直接將其添加到框架時,將會從滾動窗格中刪除「inputText」。 – iBelieve

+0

'frame.add(inputText)'將從滾動窗格中刪除文本區域,因此在此調用之後添加滾動窗格將導致一個空的滾動窗格(並且'inputText'已從框架中移除,因爲這就是' BorderLayout'作品)... – MadProgrammer

+1

@mspencer我會說你需要做出答案;) – MadProgrammer

回答

5

不要的inputText添加到框架;只添加隱藏。

滾動窗格的內容已經是滾動窗格的子項。如果你也嘗試將它添加到框架(實際上是框架的內容窗格,但不管),它將一次在兩個地方,這是行不通的。