JTextArea中的滚动条

如何将滚动条添加到JTextArea?

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

只是为了完整性,以下是如何实现的:

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

一旦JTextArea被包含在JScrollPaneJScrollPane应该被添加到文本区域的位置。 在以下示例中,带滚动条的文本区域被添加到JFrame

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

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

Java教程中的以下文章有更多的细节:

  • 如何使用滚动窗格
  • 如何使用文本区域

把它放在一个JScrollPane中

编辑:这是你的链接: http : //java.sun.com/docs/books/tutorial/uiswing/components/textarea.html

你首先必须按照惯例定义一个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)。 我想这是你想要使用它的方式。

如果您想要: 在这里指导您也可以添加WordWrap到JTextArea

祝你好运,
Norm M

PS请确保您将ScrollPane添加到JPanel,而不是添加JTextArea。

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

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

我只是想说,感谢一位我认为被称为“coobird”的用户的首要职位。 我是这个新的stackoverflow.com网站,但我不能相信这个社区是多么有用和有帮助…所以感谢你们所有发布一些伟大的提示和build议给其他人。 这是一个社区的全部。

现在coobird正确地说:

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

我想说:

上述说法是绝对正确的。 事实上,我一直在使用WindowBuilder Pro插件在Eclipse中苦苦挣扎,因为我无法弄清楚什么组合可以帮助我实现这个function。 不过,多亏了coobird的post,我才能解决这个花了我几天的挫折。

我还想补充一点,即使我在原理方面有一个坚实的基础,但我对Java还是比较陌生的。 代码片断和build议你们在这里给出的是非常有用的。

我只想添加一个可以帮助别人的tid位。 我注意到Coobird把一些代码放在下面(为了展示如何创build一个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基本上创build了一个名为scrollpane的JScrollPane(在前三行代码中)…然后它通过以下行设置viewportview:scrollPane.setViewportView(textArea_1)。 所以实质上,这一行是添加textArea_1在我的代码(这显然是一个JTextArea)被添加到我的JScrollPane **正是什么coobird说的)。

希望这是有帮助的,因为我不希望WindowBuilder Pro开发人员觉得Coobird的build议是不正确的或者什么的时候感到困惑。

最好的祝愿所有和快乐编码:)

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

}