JTextArea+JScrollPane滚动条自动在最下边(转帖)

这是我制作五子棋的过程中遇到的问题,在网上搜了好几种答案,分别列在下面了。不过感觉第一种相当方便。用得简洁,爽!

1. 利用JTextArea的selectAll();方法在添加信息之后强制将光标移动到最后一行。据说是Aviva中采用的方式。

2.使用JTextArea的setCaretPosition();手动设置光标的位置为最后一行。人气颇高。使用方法也很简单,如下:textArea.setCaretPosition(textArea.getDocument().getLength());

3.(copy的)在JTextArea加载了自动滚动条JScroll之后,将JTextArea加入到JScrolPanel的ViewPort中: (有一些Bug,使得图像有点闪烁) 
     recvScrollPane.getViewport().add(recvArea, null);
     然后在JTextArea插入最后一条新消息之后,将滚动条的Viewport重新设置到最底端的位置:
     int height = 20;
     Point p = new Point();
     p.setLocation(0, recvArea.getLineCount() * height);
     recvScrollPane.getViewport().setViewPosition(p);

4.网上以为仁兄用英文说的tricky treatment

JTextPane pane = new JTextPane();... // add some text to the JTextPane...
    Document doc = pane.getDocument();
   pane.select(doc.getLength(), doc.getLength()); // this should enforce the viewport move to where the line being selected.
   ...

5.这似乎是最常用的方法,但是实际使用情况是只能到倒数第二行。还是贴出来

JScrollBar   sbar=spContainer.getVerticalScrollBar();   
  sbar.setValue(sbar.getMaximum());

时间: 2024-10-06 17:30:57

JTextArea+JScrollPane滚动条自动在最下边(转帖)的相关文章

JTextArea设置滚动条

应将JTextArea置于JScrollPanel中 若要使只有垂直滚动条而没有水平滚动条,使用JTextArea.setLineWrap(true),自动换行. 以下摘自[url]http://zhidao.baidu.com/question/31571035.html?fr=qrl[/url] JTextArea txaDisplay = new JTextArea(); JScrollPane scroll = new JScrollPane(txaDisplay); //把定义的JTe

滚动条自动滚到底

设置页面加载时滚动条自动滚到底的方法: jQuery: $(function(){ var h = $(document).height()-$(window).height(); $(document).scrollTop(h); }); JavaScript: window.onload = function(){ var h = document.documentElement.scrollHeight || document.body.scrollHeight; window.scrol

[JS前端开发] js/jquery控制页面动态加载数据 滑动滚动条自动加载事件

页面滚动动态加载数据,页面下拉自动加载内容 相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多 有手机的相信都见过这样的效果:进入qq空间,向下拉动空间,到底部时,会动态加载剩余的说说或者是日志 今天我们就来看看他们的实现思路和js控制动态加载的代码 下面的代码主要是控制滚动条下拉时的加载事件的 在下面代码说明出,写上你的操作即可,无论是加载图片还是加载记录数据  都可以 别忘了引用jquery类库 [JavaScript] 纯文本查看 复制代码

JTextArea 加入滚动条

JTextArea texA; JScrollPane scroll; TextEdit(String name){ super(name); init(); } void init(){ this.setBounds(100,100,600,400); JPanel pan = new JPanel(); pan.setLayout(new FlowLayout(FlowLayout.CENTER)); pan.setBackground(Color.YELLOW); texA = new J

JScrollPanel滚动条自动滑到底部的实现

JScrollPanel与JTable一起使用时,有两种方法,在监听器中添加以下代码,可以在table中增加一行时滚动条始终处于最底部: 方法1(该方法效果正常):     int rowCount = tblLogState.getRowCount();     tblLogState.getSelectionModel().setSelectionInterval(rowCount - 1, rowCount - 1);     Rectangle rect = tblLogState.ge

让DIV的滚动条自动滚动到最底部 - 3种方法

要制作一个在线聊天的程序,在做最后的修饰时,需要对获得的信息即时滚动以保证用户总能看到最新消息. 聊天程序是基于AJAX设计的,没有用框架,消息容器是一个DIV,所以问题就在于如何控制DIV的滚动条. 但同样的代码拿到我这里却完全失效,又仔细查了下资料说XHTML标准下scrollTop的值恒为0,解决办法是使用 document.documentElement.scrollTop代替document.body.scrollTop,讲了半天所解决的是整个页 面的滚动条.这个方法我是用不了了,因为

WPF RichTextBox滚动条自动滚动实例、文本自动滚动实例

说明:1.后台代码添加测试 数据 2.使用 richTextBox.ScrollToVerticalOffset()方法,滚动竖直方向滚动条位置 3.使用定时器DispatcherTimer,修改页面显示数据 4.自己计算处理,已经滚动的高度位置 Xaml代码: <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="205*"/> <ColumnDefinition Width=&qu

【转】MFC编辑框自动换行,垂直滚动条自动下移

1.新建一个编辑框控件(Edit Control),将其多行(Multiline)前面打勾(属性设置为True),Auto HScroll前面的勾去掉(属性设置False),这样就可以实现每一行填满后自动换行了. 2.再将垂直滚动条(Vetrical Scroll)前面打勾(属性设置为True),当输入或显示超过编辑框的大小后就会出现垂直滚动条. 3.如果是输入,滚动条会自动移动跟随到当前输入行,但是如果是设置将很多内容一次性让编辑框显示,滚动条就会一直处于最上方,需要手动拉到最下面才能看见最后

WPF ItemsControl 取消选中item项,滚动条自动跑到该item顶部的问题

项目中ItemsControl 自定义了DataTemplate,代码如下: <ScrollViewer x:Name="PaperScrollCiewer" Margin="1" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Background="#ccc" ScrollChanged="P