【问题标题】:Scrollbars on JTextArea in a JScrollPane do not workJScrollPane 中 JTextArea 上的滚动条不起作用
【发布时间】:2011-02-10 20:03:45
【问题描述】:

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

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

【问题讨论】:

    标签: java swing jscrollpane jtextarea


    【解决方案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();
    }
    

    }

    【讨论】:

      【解决方案2】:

      其他人的大小是正确的。顺便说一句,考虑从事件调度线程 (EDT) 开始:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 谢谢!出于某种原因,我认为我已经尝试过但失败了,但它确实是一种享受。干杯。
        • +1 - 将setPreferredSize 完全删除到文本区域,或者如果您想以这种方式设置大小,请将其设置在scrollPane
        • 我在 NetBeans 7.3 中使用 Swing 布局编辑器。为了完成这项工作,我必须将 JTextArea 的 PreferredSize 属性设置为 null。当我这样做时,垂直滚动条神奇地出现了。
        猜你喜欢
        • 2016-03-17
        • 2014-12-14
        • 1970-01-01
        • 2018-01-25
        • 1970-01-01
        • 2014-06-11
        • 2022-11-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多