如何将滚动条添加到JTextArea?
答案 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 祝你好运,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);