JTextArea中的滚动条
如何将滚动条添加到JTextArea?
正如Fredrik在他的回答中提到的,实现这一点的简单方法是将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
– 我觉得这是一个常见的错误,将文本区域本身添加到目标容器,而不是带有文本区域的滚动窗格。
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(); }
}