Java:Swing篇,实现JList、JTextArea的自动滚动,实时刷新功能
1. 功能
作为swing的组件,JList与JTextArea是不可以单独实现滚动功能的,需要与JScrollPane结合才可以。
本代码中:
JList实现从其它数据源获取数据,然后依次对这些数据进行处理,处理过程中,在JList中选择当前处理的记录,依次向下移动。
JTextArea显示处理结果,因为有很多数据,内容满了的时候,需要滚动显示,就是一直显示最新的数据。
2. 实现代码
注意:下面的代码片段必须插入类的各相关段中,不是完整代码。
- // 代码片段一,定义变量
- private JList<String> jListAuthor;
- private JScrollPane jScrollPaneAuthor;
- private JScrollPane jScrollPaneInfo;
- private JTextArea jTextAreaInfo;
- // ......
// 代码片段二,生成对象并加入到界面中- {
- {
- jListAuthor = new JList<String>();
- }
- jScrollPaneAuthor = new JScrollPane();
- // For ensureIndexIsVisible method to work, the JList must be within a JViewport.
- jScrollPaneAuthor.getViewport().setView(jListAuthor);
- getContentPane().add(jScrollPaneAuthor);
- jScrollPaneAuthor.setBounds(5, 5, 150, 403);
- jScrollPaneAuthor.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
- }
- {
- {
- jTextAreaInfo = new JTextArea();
- jTextAreaInfo.setText("");
- jTextAreaInfo.setLineWrap(true); // 设置自动换行
- // 设置断行不断字
- // If set to true the lines will be wrapped at word boundaries (whitespace) if they are too long to fit within the allocated width.
- // If set to false, the lines will be wrapped at character boundaries. By default this property is false.
- jTextAreaInfo.setWrapStyleWord(true);
- }
- jScrollPaneInfo = new JScrollPane(jTextAreaInfo);
- getContentPane().add(jScrollPaneInfo);
- jScrollPaneInfo.setBounds(347, 0, 290, 403);
- }
- // ......
// 代码片段三,获取数据并填充左边的JList- TreeSet<String> ts = myService.getAuthors();
- @SuppressWarnings({ "rawtypes", "unchecked" })
ListModel<String> jListModelAuthor = new DefaultComboBoxModel(- ts.toArray());
- jListAuthor.setModel(jListModelAuthor);
- // ......
// 代码片段四,对左边的JList进行遍历,处理,处理结果显示在右边JTextArea,并刷左右界面显示- ListModel<String> lm = jListAuthor.getModel();
- int totalIndexs = lm.getSize();
- // 起始值从当前选择的记录+1
- for(int index=jListAuthor.getSelectedIndex()+1; index<totalIndexs; index++) {
- String uname = (String)lm.getElementAt(index);
- // ......
- // ......
- // 刷新左边JList窗口
- jListAuthor.setSelectedIndex(index);
- jListAuthor.ensureIndexIsVisible(index);
- // 如果左边界面刷新出现问题,可以尝试加入此条语句
- jScrollPaneAuthor.repaint();
- List<String> tempResult = myService.processRecord(uname);
- for(String str: tempResult) {
- // 右边增加一行处理结果
- jTextAreaInfo.append(str + "\n");
- // 刷新右边JTextArea窗口
- jTextAreaInfo.setCaretPosition(jTextAreaInfo.getDocument().getLength());
- // ......
- // ......
- }
- }
3. 效果
Java:Swing篇,实现JList、JTextArea的自动滚动,实时刷新功能的更多相关文章
- Java Swing 如何添加输入文字并且可以滚动的文本框?( JTextArea ,JScrollPane的使用)
准备: JTextArea 文本区,一个可以输入文字的文本框 常用方法: 1.setText(String t)设置文本区中显示的文本 2.getText() 获取文本区中显示的文本 JScrollP ...
- java SWT中Label实时刷新当前时间
同样最近在开发swt的一个项目,业务中的一个功能模块类似百度网盘的上传进度条 0/80. 即已上传0个,总共80个.效果展示要的就是实时刷新,2/80呀,15/80呀,针对这个,就有了这篇文章. 下面 ...
- Java进阶篇(六)——Swing程序设计(上)
Swing是GUI(图形用户界面)开发工具包,内容有很多,这里会分块编写,但在进阶篇中只编写Swing中的基本要素,包括容器.组件和布局等,更深入的内容会在高级篇中出现.想深入学习的朋友们可查阅有关资 ...
- Java有用经验总结--Swing篇
Java有用经验总结--Swing篇 前言 本文前言部分为我的一些感想,假设你仅仅对本文介绍的Java有用技巧感兴趣,能够跳过前言直接看正文的内容. 本文的写作动机来源于近期接给人家帮忙写的一个小程序 ...
- JAVA 如何使JScrollPane中的JTextArea自动滚动到最后一行?
1.要使JTextArea带有滚动条,需将JTextArea对象添加到JScrollPane中. JTextArea logArea = new JTextArea(15, 35); //创建JTex ...
- Java Swing 使用总结(转载)
随笔转载自:此去经年ぢ 地址:http://www.cnblogs.com/FLFL/p/5369756.html 1. GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在 ...
- Java Swing窗体小工具实例 - 原创
Java Swing窗体小工具实例 1.本地webserice发布,代码如下: 1.1 JdkWebService.java package server; import java.net.InetA ...
- Java Swing客户端小项目
记录一下两个用java swing写的客户端. 项目1: 关键词:swing jtable 代码如下: 1.主类: package com.my.agent.client; import java. ...
- Java入门篇(六)——类和对象
写到这里终于写到了入门篇的最后一个知识点了.类和对象是Java中经常被提到的两个词汇,实际上可以将类看作对象的载体,它定义了对象所具有的功能.Java是面向对象的语言,因此掌握类与对象是学习Java语 ...
随机推荐
- OAuth 2.0 Authorization Framework RFC
Internet Engineering Task Force (IETF) D. Hardt, Ed.Request for Comments: 6749 MicrosoftObsoletes: 5 ...
- poj 1879 Truck History
本题链接:点击打开链接 题目大意: 输入n表示卡车辆数,输入每辆卡车编号.即长度为7的字符串,每辆卡车编号均可由其他类型编号衍生过来,求由当中一辆衍生出其他全部的最小衍生次数(有一个字符不同就需衍生一 ...
- iOS多线程与网络开发之多线程NSThread
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...
- Android ViewPager用法小结
android-support-v4.jar 是谷歌提供给我们的一个兼容低版本号安卓设备的软件包.里面包囊了仅仅有在 Android 3.0 以上可用的API.而 ViewPager 就是当中之中的一 ...
- or1200中载入存储类指令说明
下面内容摘自<步步惊芯--软核处理器内部设计分析>一书 OR1200中实现的载入存储类指令有8条,每条指令的作用与说明如表9.1所看到的. watermark/2/text/aHR0cDo ...
- Java根据两点的经纬度来计算之间的距离
import java.util.HashMap; import java.util.Map; public class MapDistance { private static double EAR ...
- CF MVC3此操作要求连接到 'master' 数据库。无法创建与 'master' 数据库之间的连接,这是因为已打开原始数据库连接,并且已从连接字符串中删除凭据。请提供未打开的连接 解决方法
<add name="ProwebEntities" connectionString ="Data Source=.;Integrated Security=tr ...
- eclipse 修改maven项目的jdk版本
eclipse 修改maven项目的jdk版本 CreationTime--2018年6月8日10点29分 Author:Marydon 1.情景展示 jdk版本太低,如何修改 2.错误方式 第一 ...
- LINUX下一款不错的网站压力测试工具webbench
LINUX下一款不错的网站压力测试工具webbench 分类: Linux 2014-07-03 09:10 220人阅读 评论(0) 收藏 举报 [html] view plaincopy wget ...
- Redis批量查询删除KEYS
对腾讯云的Redis集群不支持很多指令(config get * .flushdb.flushall.等相关指令) redis指令限制:https://www.qcloud.com/document/ ...