1. 功能

作为swing的组件,JList与JTextArea是不可以单独实现滚动功能的,需要与JScrollPane结合才可以。

本代码中:

JList实现从其它数据源获取数据,然后依次对这些数据进行处理,处理过程中,在JList中选择当前处理的记录,依次向下移动。

JTextArea显示处理结果,因为有很多数据,内容满了的时候,需要滚动显示,就是一直显示最新的数据。

2. 实现代码

注意:下面的代码片段必须插入类的各相关段中,不是完整代码。

  1. // 代码片段一,定义变量
  2. private JList<String> jListAuthor;
  3. private JScrollPane jScrollPaneAuthor;
  4. private JScrollPane jScrollPaneInfo;
  5. private JTextArea jTextAreaInfo;
  6.  
  7. // ......

  8. // 代码片段二,生成对象并加入到界面中
  9. {
  10. {
  11. jListAuthor = new JList<String>();
  12. }
  13. jScrollPaneAuthor = new JScrollPane();
  14.  
  15. // For ensureIndexIsVisible method to work, the JList must be within a JViewport.
  16. jScrollPaneAuthor.getViewport().setView(jListAuthor);
  17. getContentPane().add(jScrollPaneAuthor);
  18. jScrollPaneAuthor.setBounds(5, 5, 150, 403);
  19. jScrollPaneAuthor.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
  20. }
  21.  
  22. {
  23. {
  24. jTextAreaInfo = new JTextArea();
  25. jTextAreaInfo.setText("");
  26. jTextAreaInfo.setLineWrap(true); // 设置自动换行
  27.  
  28. // 设置断行不断字
  29. // If set to true the lines will be wrapped at word boundaries (whitespace) if they are too long to fit within the allocated width.
  30. // If set to false, the lines will be wrapped at character boundaries. By default this property is false.
  31. jTextAreaInfo.setWrapStyleWord(true);
  32. }
  33. jScrollPaneInfo = new JScrollPane(jTextAreaInfo);
  34. getContentPane().add(jScrollPaneInfo);
  35. jScrollPaneInfo.setBounds(347, 0, 290, 403);
  36. }
  37.  
  38. // ......

  39. // 代码片段三,获取数据并填充左边的JList
  40. TreeSet<String> ts = myService.getAuthors();
  41.     @SuppressWarnings({ "rawtypes", "unchecked" })
        ListModel<String> jListModelAuthor = new DefaultComboBoxModel(
  42. ts.toArray());
  43. jListAuthor.setModel(jListModelAuthor);
  44.  
  45. // ......

  46. // 代码片段四,对左边的JList进行遍历,处理,处理结果显示在右边JTextArea,并刷左右界面显示
  47. ListModel<String> lm = jListAuthor.getModel();
  48. int totalIndexs = lm.getSize();


  49. // 起始值从当前选择的记录+1
  50. for(int index=jListAuthor.getSelectedIndex()+1; index<totalIndexs; index++) {
  51. String uname = (String)lm.getElementAt(index);


  52. // ......
  53. // ......


  54. // 刷新左边JList窗口
  55. jListAuthor.setSelectedIndex(index);
  56. jListAuthor.ensureIndexIsVisible(index);


  57. // 如果左边界面刷新出现问题,可以尝试加入此条语句
  58. jScrollPaneAuthor.repaint();


  59. List<String> tempResult = myService.processRecord(uname);
  60. for(String str: tempResult) {
  61. // 右边增加一行处理结果
  62. jTextAreaInfo.append(str + "\n");
  63.  
  64. // 刷新右边JTextArea窗口
  65. jTextAreaInfo.setCaretPosition(jTextAreaInfo.getDocument().getLength());


  66. // ......
  67. // ......
  68. }
  69. }

3. 效果

Java:Swing篇,实现JList、JTextArea的自动滚动,实时刷新功能的更多相关文章

  1. Java Swing 如何添加输入文字并且可以滚动的文本框?( JTextArea ,JScrollPane的使用)

    准备: JTextArea 文本区,一个可以输入文字的文本框 常用方法: 1.setText(String t)设置文本区中显示的文本 2.getText() 获取文本区中显示的文本 JScrollP ...

  2. java SWT中Label实时刷新当前时间

    同样最近在开发swt的一个项目,业务中的一个功能模块类似百度网盘的上传进度条 0/80. 即已上传0个,总共80个.效果展示要的就是实时刷新,2/80呀,15/80呀,针对这个,就有了这篇文章. 下面 ...

  3. Java进阶篇(六)——Swing程序设计(上)

    Swing是GUI(图形用户界面)开发工具包,内容有很多,这里会分块编写,但在进阶篇中只编写Swing中的基本要素,包括容器.组件和布局等,更深入的内容会在高级篇中出现.想深入学习的朋友们可查阅有关资 ...

  4. Java有用经验总结--Swing篇

    Java有用经验总结--Swing篇 前言 本文前言部分为我的一些感想,假设你仅仅对本文介绍的Java有用技巧感兴趣,能够跳过前言直接看正文的内容. 本文的写作动机来源于近期接给人家帮忙写的一个小程序 ...

  5. JAVA 如何使JScrollPane中的JTextArea自动滚动到最后一行?

    1.要使JTextArea带有滚动条,需将JTextArea对象添加到JScrollPane中. JTextArea logArea = new JTextArea(15, 35); //创建JTex ...

  6. Java Swing 使用总结(转载)

    随笔转载自:此去经年ぢ 地址:http://www.cnblogs.com/FLFL/p/5369756.html 1.     GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在 ...

  7. Java Swing窗体小工具实例 - 原创

    Java Swing窗体小工具实例 1.本地webserice发布,代码如下: 1.1 JdkWebService.java package server; import java.net.InetA ...

  8. Java Swing客户端小项目

    记录一下两个用java swing写的客户端. 项目1: 关键词:swing  jtable 代码如下: 1.主类: package com.my.agent.client; import java. ...

  9. Java入门篇(六)——类和对象

    写到这里终于写到了入门篇的最后一个知识点了.类和对象是Java中经常被提到的两个词汇,实际上可以将类看作对象的载体,它定义了对象所具有的功能.Java是面向对象的语言,因此掌握类与对象是学习Java语 ...

随机推荐

  1. OAuth 2.0 Authorization Framework RFC

    Internet Engineering Task Force (IETF) D. Hardt, Ed.Request for Comments: 6749 MicrosoftObsoletes: 5 ...

  2. poj 1879 Truck History

    本题链接:点击打开链接 题目大意: 输入n表示卡车辆数,输入每辆卡车编号.即长度为7的字符串,每辆卡车编号均可由其他类型编号衍生过来,求由当中一辆衍生出其他全部的最小衍生次数(有一个字符不同就需衍生一 ...

  3. iOS多线程与网络开发之多线程NSThread

    郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...

  4. Android ViewPager用法小结

    android-support-v4.jar 是谷歌提供给我们的一个兼容低版本号安卓设备的软件包.里面包囊了仅仅有在 Android 3.0 以上可用的API.而 ViewPager 就是当中之中的一 ...

  5. or1200中载入存储类指令说明

    下面内容摘自<步步惊芯--软核处理器内部设计分析>一书 OR1200中实现的载入存储类指令有8条,每条指令的作用与说明如表9.1所看到的. watermark/2/text/aHR0cDo ...

  6. Java根据两点的经纬度来计算之间的距离

    import java.util.HashMap; import java.util.Map; public class MapDistance { private static double EAR ...

  7. CF MVC3此操作要求连接到 'master' 数据库。无法创建与 'master' 数据库之间的连接,这是因为已打开原始数据库连接,并且已从连接字符串中删除凭据。请提供未打开的连接 解决方法

    <add name="ProwebEntities" connectionString ="Data Source=.;Integrated Security=tr ...

  8. eclipse 修改maven项目的jdk版本

      eclipse 修改maven项目的jdk版本 CreationTime--2018年6月8日10点29分 Author:Marydon 1.情景展示 jdk版本太低,如何修改 2.错误方式 第一 ...

  9. LINUX下一款不错的网站压力测试工具webbench

    LINUX下一款不错的网站压力测试工具webbench 分类: Linux 2014-07-03 09:10 220人阅读 评论(0) 收藏 举报 [html] view plaincopy wget ...

  10. Redis批量查询删除KEYS

    对腾讯云的Redis集群不支持很多指令(config get * .flushdb.flushall.等相关指令) redis指令限制:https://www.qcloud.com/document/ ...