有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我无法获取要滚动的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) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    其他人的尺寸是对的。另一方面,考虑启动事件调度线程(EDT):

    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
    
            @Override
            public void run() {
                new TextAreaTest().setVisible(true);
            }
        });
    }
    
  3. # 3 楼答案

    使用这个代码

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

    }