java swing中Jtable+JScrollpane实现自动滚动到底部——测试真实有效
2015-10-08 12:28
671 查看
本人在实现一个聊天程序时使用到了Jtable+JScrollpane的方式,但是发现来了条消息时,不会自动滚动到底部,在网上找了很多方法,那些大家都说可以得方法我试了下就是不行,后来在http://www.oschina.net/question/4873_23262上看到一种方法,试了下完美解决,感谢这位童鞋。花了好久时间 ,终于解决了。我这里总结下:
1.前面那些方法中所以没用的原因是因为,当table新加了一行后,JScrollpane自身有一个自动调整的过程,如果这个时候去设置滚动到底部,滚动条不能完全滚动到底部。
2.解决思路:当滚动条自动调整完毕后在去设置它滚动到底部。监听滚动条的调整事件addAdjustmentListener
3.解决方法:scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent evt) {
if(evt.getAdjustmentType() == AdjustmentEvent.TRACK && isNeedBottom <= 3) {
scrollPane.getVerticalScrollBar().setValue(scrollPane.getVerticalScrollBar().getModel().getMaximum() - scrollPane.getVerticalScrollBar().getModel().getExtent());
isNeedBottom++;
}
}
});
上面之所以用到了一个全局变量isNeedBottom 是因为滚动条自动调整会执行2到3次,不会超过3次(原因不明)。每次网table新增加一行后把isNeedBottom设置为0即可。
1.前面那些方法中所以没用的原因是因为,当table新加了一行后,JScrollpane自身有一个自动调整的过程,如果这个时候去设置滚动到底部,滚动条不能完全滚动到底部。
2.解决思路:当滚动条自动调整完毕后在去设置它滚动到底部。监听滚动条的调整事件addAdjustmentListener
3.解决方法:scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
public void adjustmentValueChanged(AdjustmentEvent evt) {
if(evt.getAdjustmentType() == AdjustmentEvent.TRACK && isNeedBottom <= 3) {
scrollPane.getVerticalScrollBar().setValue(scrollPane.getVerticalScrollBar().getModel().getMaximum() - scrollPane.getVerticalScrollBar().getModel().getExtent());
isNeedBottom++;
}
}
});
上面之所以用到了一个全局变量isNeedBottom 是因为滚动条自动调整会执行2到3次,不会超过3次(原因不明)。每次网table新增加一行后把isNeedBottom设置为0即可。
相关文章推荐
- Druid连接池及监控在Spring配置如下:
- struts 2的OGNL表达式
- 黑马程序员——java基础日记——多线程(2)——线程间通信与JDK1.5新特性
- Eclipse中修改SVN用户名和密码方法(转)
- Java____赋值顺序,调用顺序,内部类衍生问题:赋值和构造器、代码块谁先执行?+4种代码块
- 开发项目准备举例
- 学生选课系统-管理员功能模块设计(Java+NetBeans+SQLServer2008)
- Eclipse创建WEB工程Maven+Spring+SpringMVC+MyBatis示例
- MyEclipse的激活、破解
- Java获取字符串编码方式
- Java快捷键与搜狗输入法快键的冲突
- Java如何保留两位小数
- Java性能小技巧
- HDOJ 1850 Being a Good Boy in Spring Festival(尼姆博奕,位运算小技巧)
- 高吞吐低延迟Java应用的垃圾回收优化
- adt-bundle svn插件安装
- SpringMvc-参数为数组
- SpringMvc-路径为变量,获取这个变量
- Java集合类
- eclipse添加jar反编译插件