2012-12-20 147 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添加到框架;只添加隐藏。

滚动窗格的内容已经是滚动窗格的子项。如果你也尝试将它添加到框架(实际上是框架的内容窗格,但不管),它将一次在两个地方,这是行不通的。