社区
Java SE
帖子详情
swing JScrollPane实现即时滚动,不等主线程返回实例
xiaoduan95
2014-11-13 10:34:54
JScrollPane是否可以实现即时滚动, 不等主线程返回。 就像JTextArea可以使用paintImmediately方法实现即时添加一样
上图说明需求。
如图所示,点击启动按钮时会在监控屏打印信息,但由于点击启动以后有死循环存在,这个死循环是必须要的。所以为了实现即时添加信息,使用了JTextArea.paintImmediately方法,但是滚动条不会即时滚动,由于有死循环,所以也等不到主线程返回。那么请问怎样可以不等主线程返回就能达到滚动效果呢?
目前代码如下:
求大神支招。
...全文
199
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
JScrollPane
滚动
条不好使问题,以及
JScrollPane
中放入JLayeredPane问题
本文详细介绍了如何在项目中
实现
网络拓扑结构的插件,并通过将JLayeredPane与
JScrollPane
结合使用,成功在拓扑展示面板中添加
滚动
条。关键在于正确设置
滚动
条的策略和面板的大小。
java 刷新component_
Swing
应用开发实战系列之四:组件内容实时刷新问题
在Java
Swing
中,动态刷新组件内容如JLabel、JTextField并不直接,因为界面刷新是
线程
同步的。通常,需要在多
线程
中调用刷新方法,例如通过创建新
线程
或结合
JScrollPane
来
实现
。对于JLabel,多
线程
模式可以确保动态刷新效果;而对于JTextArea,多
线程
模式更为重要,因为它能保证
滚动
条与内容同步。在后续章节,将探讨使用
JScrollPane
、JTextArea、多
线程
和事件机制来创建日志信息监控器。
接上篇,客户端
实现
,图形界面编程,利用socket和UCP/TCP编写,客户端和服务器端程序可以进行多次对话
本文介绍了一个基于Java
Swing
的Socket聊天客户端设计与
实现
,涵盖了GUI界面、网络通信及
线程
处理等核心模块。客户端能与服务器进行双向消息交互,支持聊天记录显示和消息发送。
图形界面编程,利用socket和UCP/TCP编写,客户端和服务器端程序可以进行多次对话
本文介绍了一款基于Java
Swing
和Socket技术的聊天服务器设计与
实现
。项目采用ServerSocket监听客户端连接,利用JFrame搭建GUI界面,
实现
消息发送与接收功能。
Java高级教程3_图形用户界面GUI
本文详细介绍Java图形用户界面(GUI)编程技术,涵盖AWT和
Swing
组件库的基础知识、事件处理机制、自定义组件设计等内容。通过
实例
展示如何创建窗口、处理用户交互事件、绘制图形、使用布局管理器等。
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章