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的自动滚动,实时刷新功能的更多相关文章

  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. [Backbone]4. Model & View, toggle between Model and View. -- 1

    如上图所示: Server有Data都交给Models处理, 然后由Models给Views Data,让View去告诉DOM如何显示, 然后DOM显示HTML; View events update ...

  2. js数组对象深度复制

    var deepCopy = function(o) { if (o instanceof Array) { var n = []; for (var i = 0; i < o.length; ...

  3. Android实现Material Design风格的设置页面(滑动开关控件)

    前言 本文链接 http://blog.csdn.net/never_cxb/article/details/50763271 转载请注明出处 參考了这篇文章 Material Design 风格的设 ...

  4. listView/GridView getChild获取不到的解决方法

    在onCreate或onResume中调用了getChildAt()方法,这时候adapter中的Item还没有放入到AdapterView中去.... 解决方法,当activity获得焦点事件的时候 ...

  5. remote: ERROR: missing Change-Id in commit message footer

    remote: ERROR: missing Change-Id in commit message footer [摘要:git 提交到近程版本库失足:remote: ERROR: missing ...

  6. C# 64位系统调用32位DLL异常解决办法(异常来自HRESULT :0x8007007E)

    解决办法如下 1.在IDE中将目标平台设置成x86(VS是在项目的属性->生成->目标平台) 2.如果DLL中调用了其他的DLL,需要将其他的DLL一同编译 3.有时DLL生成时会依赖于I ...

  7. CAE医疗综合视听中心管理系统

    http://caehealthcare.com/eng/audiovisual-solutions/learning-space https://vimeo.com/108897296http:// ...

  8. Spring -- 三种配置方式

    1.Explicit configuration in XML:显示的XML配置. 优点: 1)XML配置方式进一步降低了耦合,使得应用更加容易扩展,即使对配置文件进一步修改也不需要工程进行修改和重新 ...

  9. acm2024

    /**  * C语言合法标识符  */ import java.util.*; public class acm2024 { public static void main(String[] args ...

  10. 如何开启firebug显示注释?

    如何开启firebug注释显示?