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

时间:2010-04-21 22:33:32

标签: java swing jscrollpane jtextarea

我无法让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);
    }
}

我已尝试在构造函数中设置文本区域文本或行和列,两者都不起作用。它正在努力。任何想法?

3 个答案:

答案 0 :(得分:26)

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

答案 1 :(得分:1)

其他人的规模是正确的。另外,请考虑从Event Dispatch Thread(EDT)开始:

public static void main(String args[]) {
    EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
            new TextAreaTest().setVisible(true);
        }
    });
}

答案 2 :(得分:-1)

使用此代码

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

}