JTextArea中的滚动条

时间:2009-06-27 09:18:22

标签: java swing

如何将滚动条添加到JTextArea?

7 个答案:

答案 0 :(得分:71)

正如Fredrik在his answer中提到的,实现此目的的简单方法是将JTextArea放在JScrollPane中。这将允许滚动JTextArea的视图区域。

为了完整起见,以下是如何实现:

JTextArea ta = new JTextArea();
JScrollPane sp = new JScrollPane(ta);   // JTextArea is placed in a JScrollPane.

JTextArea中包含JScrollPane后,应将JScrollPane添加到文本区域所在的位置。在以下示例中,带有滚动条的文本区域将添加到JFrame

JFrame f = new JFrame();
f.getContentPane().add(sp);

谢谢kd304在评论中提到应该将JScrollPane添加到容器而不是JTextArea - 我觉得将文本区域本身添加到常见错误目标容器,而不是带有文本区域的滚动窗格。

The Java Tutorials的以下文章有更多详情:

答案 1 :(得分:18)

将它放在JScrollPane

修改:这是一个链接:http://java.sun.com/docs/books/tutorial/uiswing/components/textarea.html

答案 2 :(得分:15)

首先必须按照惯例定义JTextArea:

public final JTextArea mainConsole = new JTextArea("");

然后将JScrollPane放在TextArea

JScrollPane scrollPane = new JScrollPane(mainConsole);
scrollPane.setBounds(10,60,780,500);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);

最后一行表示垂直滚动条将始终存在。横向有一个类似的命令。否则,滚动条只会在需要时显示(或者从不显示,如果使用_SCROLLBAR_​​NEVER)。我想这是你想要使用它的方式。

如果您想:Guide Here

,您还可以将Wordwrap添加到JTextArea 祝你好运,
Norm M

P.S。确保将ScrollPane添加到JPanel而不添加JTextArea。

答案 3 :(得分:5)

            txtarea = new JTextArea(); 
    txtarea.setRows(25);
    txtarea.setColumns(25);
    txtarea.setWrapStyleWord(true);
    JScrollPane scroll = new JScrollPane (txtarea);
    panel2.add(scroll); //Object of Jpanel

以上给定的行自动显示水平和水平。垂直滚动条..

答案 4 :(得分:2)

我只是想感谢一位我认为名为" coobird"的用户的第一篇文章。 我是这个stackoverflow.com网站的新手,但我不能相信这个社区是多么有用和有帮助...所以感谢大家发布一些很棒的建议和建议给别人。这就是社区的意义所在。

现在coobird正确地说:

正如Fredrik在他的回答中提到的,实现这一目标的简单方法是将JTextArea放在JScrollPane中。这将允许滚动JTextArea的视图区域。

我想说:

以上陈述绝对正确。事实上,我一直在使用WindowBuilder Pro插件在Eclipse中苦苦挣扎,因为我无法弄清楚哪些小部件组合可以帮助我实现这一目标。然而,由于coobird的帖子,我能够解决这种花费数天时间的挫败感。

我还想补充一点,即使我在原则方面有扎实的基础,我对Java也相对较新。代码片段和建议你们在这里给予非常有用。

我只想添加另一个可能有助于其他人的tid-bit。我注意到Coobird放了一些代码如下(为了展示如何创建一个Scrollable文本区域)。他写道:

JTextArea ta = new JTextArea();
JScrollPane sp = new JScrollPane(ta);   

我想感谢coobird的上述代码片段。我没有直接尝试过,但我相信它会工作得很好。但是,有些人可能会对你有所帮助,让我知道当我使用WindowBuilder Pro工具时,我得到的东西更像是以下(我认为只是稍长一些"间接"方式WindowBuilder实现了你在上面两行中看到的内容。我的代码有点像这样:

JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(23, 40, 394, 191);
frame.getContentPane().add(scrollPane);

JTextArea textArea_1 = new JTextArea();
scrollPane.setViewportView(textArea_1);`

请注意,WindowBuilder基本上创建了一个名为scrollpane的JScrollPane(在前三行代码中)...然后它通过以下行设置viewportview: scrollPane.setViewportView(textArea_1)。所以从本质上讲,这一行是在我的代码中添加textArea_1(显然是一个JTextArea),将其添加到我的JScrollPane **中,这正是coobird所说的。)

希望这是有帮助的,因为我不希望WindowBuilder Pro开发人员感到困惑,认为Coobird的建议不正确或者其他什么。

对所有人的祝福和快乐的编码:)

答案 5 :(得分:1)

使用JScrollPan在JScrollBar中添加JTextArea的简单方法

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

答案 6 :(得分:0)

简单 add(new JScrollPane(textArea), BorderLayout.CENTER);