Java:Swing篇,实现JList、JTextArea的自动滚动,实时刷新功能
2013-07-25 21:53
501 查看
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 servlet 几种页面跳转的方法,需要的朋友可以参考一下 在访问网页的过程中,页面自动刷新、跳转和重定向是经常用到的,这里就说说在Java中是如何实现这些功能的! 一、页面自动刷新
- WebStorm + JetBrains IDE Support 实现自动刷新功能
- 自动登录功能的java实现
- 网页自动刷新功能的实现
- IFS's ERP刷新后自动选择某行的功能实现
- ssh框架搭建:婚庆财务管理系统,AJAX自动刷新,实现增删改查四个功能,
- Java代码实现自动登录功能
- java中用servlet实现自动登录功能
- Java Swing如何实时刷新JTextArea,以显示刚才加append的内容
- java代码实现自动登录功能
- zTree实现节点修改的实时刷新功能
- 腾讯云cdn自动刷新api调用功能实现-python
- js实现定时自动刷新功能
- gulp-connect实现页面实时自动刷新
- 基于jquery实现页面滚动到底自动加载数据的功能
- JAVA-JSP内置对象之response对象实现页面自动刷新
- 基于AngularJS实现页面滚动到底自动加载数据的功能
- java实现后台自动发邮件功能
- 教你用Java安全有效的实现两星期内自动登陆功能-Session
- bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能