社区
Java SE
帖子详情
swing JScrollPane实现即时滚动,不等主线程返回实例
xiaoduan95
2014-11-13 10:34:54
JScrollPane是否可以实现即时滚动, 不等主线程返回。 就像JTextArea可以使用paintImmediately方法实现即时添加一样
上图说明需求。
如图所示,点击启动按钮时会在监控屏打印信息,但由于点击启动以后有死循环存在,这个死循环是必须要的。所以为了实现即时添加信息,使用了JTextArea.paintImmediately方法,但是滚动条不会即时滚动,由于有死循环,所以也等不到主线程返回。那么请问怎样可以不等主线程返回就能达到滚动效果呢?
目前代码如下:
求大神支招。
...全文
139
4
打赏
收藏
swing JScrollPane实现即时滚动,不等主线程返回实例
JScrollPane是否可以实现即时滚动, 不等主线程返回。 就像JTextArea可以使用paintImmediately方法实现即时添加一样 上图说明需求。 如图所示,点击启动按钮时会在监控屏打印信息,但由于点击启动以后有死循环存在,这个死循环是必须要的。所以为了实现即时添加信息,使用了JTextArea.paintImmediately方法,但是滚动条不会即时滚动,由于有死循环,所以也等不到主线程返回。那么请问怎样可以不等主线程返回就能达到滚动效果呢? 目前代码如下: 求大神支招。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
humanity
2014-11-13
打赏
举报
回复
哦,另外,Swing 一般重画有 repaint 方法,但可能需要你明确地先调用 invalidate(), reinvalidate() 之类的方法,我忘记了是要怎么调用,但具体的原理是: 1、当 Swing 准备重画界面时,如果它觉得好像没有什么东西变了,它就什么也不做,比如你根据一个变量值来画图,而这个变量值与界面的任何状态(比如值,尺寸)之类的没有任何关系,那么 Swing 没有得到任何 Property Changed Event 事件发送来的通知,它就认为你什么也没有改,因此跳过重画图的操作。 2、要让 Swing 觉得你真的改了点什么,你得 invalidate (也可能是 reinvalidate,具体我不了解细节),然后再来 repaint。 你当前死循环没有看到界面滚动可能是你没有调用 repaint 或其它类似用途的方法,paitImmediately 不知道啥用途。
humanity
2014-11-13
打赏
举报
回复
我也不明白怎么是这样的, 正常的流程是你改了组件的状态值,Swing 会在 Event Dispatcher Thread 中派发事件 (事件派发线程),换句话说只你的线程不在 Event Dispatcher Thread 中就应该不会阻挡 Swing 画图。 所以你更新 JTextArea 的 action listener 不能运行在 Swing 的 Event Dispatcher Thread 中。 SwingUtilities.isEventDispatcherThread() 能告诉你当前线程是否是 Swing 的事件派发线程。
xiaoduan95
2014-11-13
打赏
举报
回复
引用 1 楼 xiaomm627 的回复:
这个用多线程不行吗。点击启动,开启一个线程控制滚动条。 还是我没看明白?
本来我这个就是个多线程的程序。
xiaomm627
2014-11-13
打赏
举报
回复
这个用多线程不行吗。点击启动,开启一个线程控制滚动条。 还是我没看明白?
Java
Swing
JScrollPane
-(
滚动
面板)
1 简介 支持水平和垂直
滚动
视图。文本区域、表格等需要显示较多数据而空间又有限时,通常使用
JScrollPane
进行包裹以
实现
滚动
显示。
JScrollPane
内包含一个视口 表示
JScrollPane
的显示区域。 视口内包含一个需要
滚动
显示的组件,称为视图。 构造方法 参数说明: view: 需要
滚动
显示的视图组件 vsbPolicy: 垂直
滚动
条的显示策略 hsbPolicy: 水平
滚动
条的显示策略
滚动
条的显示策略的取值: 用于设置垂直
滚动
条策略,以便在需要时垂直
滚动
条时,才会显示
Java
Swing
大神必经之路12:Java
Swing
JScrollPane
-(
滚动
面板)
1 简介 支持水平和垂直
滚动
视图。文本区域、表格等需要显示较多数据而空间又有限时,通常使用
JScrollPane
进行包裹以
实现
滚动
显示。
JScrollPane
内包含一个视口 表示
JScrollPane
的显示区域。 视口内包含一个需要
滚动
显示的组件,称为视图。 构造方法 参数说明: view: 需要
滚动
显示的视图组件 vsbPolicy: 垂直
滚动
条的显示策略 hsbPolicy: 水平
滚动
条的显示策略
滚动
条的显示策略的取值: 用于设置垂直
滚动
条策略,以便在需要时垂直
滚动
条时
Swing
下
JScrollPane
自动
滚动
到底部
最近在做一个
swing
的聊天UI,想要
实现
聊天界面的消息框,每次接收消息与发送消息时,需要
滚动
面板自动
滚动
到底部。而所使用的组件是
JScrollPane
+JPane,所以,通过设置文本框的光标位置的方式,并不适用于此情况。解决的方式是:getVerticalScrollBar设置。 提示: shwoJScroll 是
JScrollPane
对象,在对象创建之后,直接为垂直
滚动
条(VerticalScrollBar)添加一个监听事件,即可
实现
。...
swing
编程之
滚动
面板:
JScrollPane
概述 官方的API文档:javax.
swing
.
JScrollPane
JScrollPane
,
滚动
面板。
JScrollPane
支持水平和垂直
滚动
视图。文本区域、表格等需要显示较多数据而空间又有限时,通常使用
JScrollPane
进行包裹以
实现
滚动
显示。
JScrollPane
内包含一个视口(ViewPort),表示
JScrollPane
的显示区域。视口内包含一个需要
滚动
显示的组件,称为视图。
JScrollPane
常用构造方法: /** * 参数说明: * view: 需要
滚动
显示
java
滚动
条_
swing
组件
JScrollPane
滚动
条
实例
代码
本文研究的主要是
swing
组件之
JScrollPane
滚动
条的
实现
代码示例,具体如下。
实例
1/**
滚动
条*/import javax.
swing
.*;public class Demo1 extends JFrame{JTextArea jta = null;
JScrollPane
jsp = null;public static void main(String[] args) {// TOD...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章