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语 ...
随机推荐
- elasticSearch nested exist与missing查询
elasticSearch nested查询,简单意义上,你可以理解为,它不会被索引,只是被暂时隐藏起来,而查询的时候,开关就是使用nested query/filter去查询 下面我有一个例子,是查 ...
- C#.NET常见问题(FAQ)-如何把函数名作为参数传递给另一个函数
在主窗体中使用的还是普通的函数,但是test函数有一个新的参数,就是method 这个method所指向的就是前面委托定义的method 更多教学视频和资料下载,欢迎关注以下信息: 我的优 ...
- C#.NET常见问题(FAQ)-想要另存一个项目,sln文件丢了怎么办,如何打开高版本的项目
如下图所示,我想要另存一个工程,把 V4.4整个的项目另存为V4.5,我可以把解决方案文件(.sln)改名字,但是我没法把文件夹改名字,改了打开sln就说找不到. 很简单的一个思路是反正sln是多 ...
- 【转】TCP/IP详解学习笔记(一)
TCP/IP详解学习笔记 这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(13)-T ...
- UVA 10026 Shoemaker's Problem 鞋匠的难题 贪心+排序
题意:鞋匠一口气接到了不少生意,但是做鞋需要时间,鞋匠只能一双一双地做,根据协议每笔生意如果拖延了要罚钱. 给出每笔生意需要的天数和每天的罚钱数,求出最小罚钱的排列顺序. 只要按罚款/天数去从大到小排 ...
- Android网络:开发浏览器(二)——功能完善之书签功能
经过上述的编写,基本的功能已经完成了,不过工具栏里面基本还是一片空白,只有一个刷新的功能,现在咱们就先完善这些功能(之前有朋友说来点图,那么这次我会截些图更好的来描述). 既然是浏览器,怎么能没有书签 ...
- 知识共享图文直播---(一)将数据库中的数据加载到MSFlexGrid空间中再导入Excel
熟话说万物皆有其存在的道理,为什么我突然想写<知识共享图文直播>这个系列呢?首先,我想的是记录自己学习的历程,在记录中加深自己对知识的理解,同时也希望自己的博文能帮助到其他数据库的初学者. ...
- Starting MySQL.. ERROR! The server quit without updating PID file (/gechong/mysqldata/10-9-23-119.pid).
配置文件修改错误了,还原一下重启服务就OK了. # /etc/init.d/mysql start
- ubuntu中设置xampp开机启动
sudo ln -s /opt/lampp/lampp /etc/init.d/lampp sudo update-rc.d -f lampp defaults
- Android逆向之旅---带你爆破一款应用的签名验证问题
一.前言 在之前的文章中说过Android中的安全和破解是相辅相成的,为了防止被破解.非常多应用做了一些防护策略.可是防护策略也是分等级.一般简单的策略就是混淆代码和签名校验.而对于签名校验非常多应用 ...