Java JScrollPane中JTextArea上的滚动条不起作用

Java JScrollPane中JTextArea上的滚动条不起作用,java,swing,jscrollpane,jtextarea,Java,Swing,Jscrollpane,Jtextarea,我无法获取要滚动的JTextArea。我不知道你怎么能把JScrollPane搞砸,但我似乎有,我就是看不到。这都是一个更大项目的一部分,但下面的代码是我如何创建JTextArea并将其添加到JScrollPane的。当您在文本区域边缘之外键入时,滚动条不会出现。将垂直滚动条设置为“始终打开”时,滚动条不会执行任何操作 import javax.swing.*; import java.awt.*; public class TextAreaTest extends JFrame{

我无法获取要滚动的JTextArea。我不知道你怎么能把JScrollPane搞砸,但我似乎有,我就是看不到。这都是一个更大项目的一部分,但下面的代码是我如何创建JTextArea并将其添加到JScrollPane的。当您在文本区域边缘之外键入时,滚动条不会出现。将垂直滚动条设置为“始终打开”时,滚动条不会执行任何操作

import javax.swing.*;
import java.awt.*;

public class TextAreaTest extends JFrame{

    public TextAreaTest() {
     super("Text Area Scroller");

     Container c = getContentPane();

     JTextArea textarea = new JTextArea();
     textarea.setPreferredSize(new Dimension(300, 50));
     textarea.setLineWrap(true);
     textarea.setText("xx\nxx\nxx\nxx\nxx\nxx\nxx\nxx\nxx\nxx\nxx\nxx\nxx\nxx\n");

     JScrollPane scroller = new JScrollPane(textarea);

     c.add(scroller, BorderLayout.CENTER);
     pack();
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String args[]){
     TextAreaTest instance = new TextAreaTest();
     instance.setVisible(true);
    }
}

我尝试在构造函数中设置文本区域文本或行和列,但这两种设置都不起作用。这让我头疼。有什么想法吗?

设置滚动窗格的首选大小,而不是文本区域。

其他人的大小是正确的。另一方面,考虑启动事件调度线程():

使用此代码

import javax.swing.*;
public class ScrollingTextArea 
{
JFrame f;
JTextArea ta;
JScrollPane scrolltxt;

public ScrollingTextArea() 
{
    // TODO Auto-generated constructor stub

    f=new JFrame();
    f.setLayout(null);
    f.setVisible(true);
    f.setSize(500,500);
    ta=new JTextArea();
    ta.setBounds(5,5,100,200);

    scrolltxt=new JScrollPane(ta);
    scrolltxt.setBounds(3,3,400,400);

    f.add(scrolltxt);

}

public static void main(String[] args)
{
    new ScrollingTextArea();
}

}

谢谢!出于某种原因,我认为我已经尝试过了,但失败了,但它确实奏效了。干杯。+1-将
setPreferredSize
完全删除到文本区域,或者如果您想这样设置大小,请在
滚动窗格上设置它,我正在使用NetBeans 7.3中的Swing布局编辑器。为了实现这一点,我必须将JTextArea的PreferredSize属性设置为null。当我这样做时,垂直滚动条神奇地出现了。
import javax.swing.*;
public class ScrollingTextArea 
{
JFrame f;
JTextArea ta;
JScrollPane scrolltxt;

public ScrollingTextArea() 
{
    // TODO Auto-generated constructor stub

    f=new JFrame();
    f.setLayout(null);
    f.setVisible(true);
    f.setSize(500,500);
    ta=new JTextArea();
    ta.setBounds(5,5,100,200);

    scrolltxt=new JScrollPane(ta);
    scrolltxt.setBounds(3,3,400,400);

    f.add(scrolltxt);

}

public static void main(String[] args)
{
    new ScrollingTextArea();
}