Java swing 如何让垂直滚动条始终在最下面

1Java swing 如何让垂直滚动条始终在最下面 

(1)JTextPane

见图说话: 

 上图中箭头所指的是一个JTextPane 

JTextPane 被包在JScrollPane 中

Java代码  

  1. //执行结果显示窗口  
  2.         resultTextPane = new AssistPopupTextPane();  
  3.         resultTextPane.setContentType("text/html; charset=UTF-8");  
  4.         resultTextPane.setEditable(false);  
  5.         DefaultCaret caret = (DefaultCaret)resultTextPane.getCaret();  
  6.         caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);  
  7.   
  8.   
  9.         scrollPane.setViewportView(resultTextPane);  

 

在接收到推送消息时,JTextPane中的内容会动态的增加,增加到一定程度,会产生垂直滚动条,那么如何使垂直滚动条始终保持在JTextPane 最底部呢? 
这样就永远可以看到最新的推送消息了. 
实现: 
(1)设置JTextPane 的策略

Java代码  

  1. DefaultCaret caret = (DefaultCaret)resultTextPane.getCaret();  
  2.         caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);  

 

(2)当JTextPane 动态增加内容时

Java代码  

  1. resultTextPane.setSelectionStart(resultTextPane.getText().length());  
  2.         JScrollBar vertical = scrollPane.getVerticalScrollBar();  
  3.         vertical.setValue( vertical.getMaximum());  

 说明: 

resultTextPane 的类型是JTextPane; 

 

(2)JTextArea

Java代码  

  1. resultTextArea = new AssistPopupTextArea();  
  2.         resultTextArea.setEditable(false);  
  3.         resultTextArea.setLineWrap(true);  
  4.         resultTextArea.setWrapStyleWord(true);  
  5.         DefaultCaret caret = (DefaultCaret)resultTextArea.getCaret();  
  6.         caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);  
  7.         scrollPane.setViewportView(resultTextArea);  
  8.         resultTextArea.setColumns(10);  

 DefaultCaret caret = (DefaultCaret)resultTextArea.getCaret();

        caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);

 

注意:JTextPane和JTextArea的区别: 
JTextPane 可以设置html样式; 
JTextArea无法设置成为html样式

时间: 2024-11-08 18:18:12

Java swing 如何让垂直滚动条始终在最下面的相关文章

java中如何将JScrollPane的垂直滚动条自动移动到最下端

JPanel QQP = new JPanel(); JScrollPane jsp = new JScrollPane(QQP); JScrollBar jsb = jsp.getVerticalScrollBar(); QQP.updateUI();//利用当前外观的值重置 UI 属性. 也可以保证滚动条随时的更新 //终于搞好了,将垂直滚动条自动的移动到最低端 //setViewPosition:设置显示在视口左上角的视图坐标 // jsp.getVerticalScrollBar().g

使用Java Swing 创建一个XML编辑器

xml|创建 我想您一定对XML有所了解,说不定您现在还跃跃欲试想写一段XML文本呢,可是现在能找到的跨平台的.免费的XML编辑器太少了.所以在本文中,我想介绍一下或者说带您一步一步的开发一个简单的XML编辑器,当然我们要用到一些最常见的Java 2 Swing组件,不过这些都是免费的,有些是JDK中的,有些是可以从网上下载的.我想通过本文,你就可以创建一个属于你自己的XML编辑器. 先让我介绍一下本文辑写的思路.首先我想简要的讨论一下XML和为什么树型结构比较适合用来显示XML,然后我们来看一

java swing组件拖动和显示问题

问题描述 java swing组件拖动和显示问题 两个问题(1)做出来的窗体组件运行后点击"添加"按钮,应该再窗体上生成一个JLabel标签,点击后能够生成但显示不出来,改变窗体大小才能显示出来.(2)生成的JLabel能够改变大小和拖动,先拖动到另一个位置,改变窗体大小后,又回到原来的位置去了.求大神知道下. 看了以前的帖子@raistlic说是重绘问题,但是按帖子方法把setVisible放在添加控件后面不起作用.使用getContentPane()invalidate.()总是提

java swing编程注意的一些问题

总结一下我在Java swing 编程实践中的一些经验以及要注意的问题 (1)如何在启动swing界面时指定组件(文本框)聚焦呢? 范例: Java代码   CreateMD5App frame = new CreateMD5App();                       frame.setVisible(true);                       frame.pathTF.requestFocus();    注意:requestFocus();必须放在this.set

java+swing界面进度条不能同步,该怎样解决,急急急急急!!!!!

问题描述 java+swing界面进度条不能同步,该怎样解决,急急急急急!!!!! for(int i=0;i<5464646354;i++){ ........... double xx=(double)(i/Diedai.iteration)*100; int x=(int)xx; AboutIOBLPSO.JinDuTiao.setValue(x); //AboutIOBLPSO是一个类,里面有变量 public static javax.swing.JProgressBar JinDuT

java Swing布局管理之BoxLayout布局_java

本文为大家解析java Swing布局管理中的BoxLayout布局,供大家参考,具体内容如下 BoxLayout:可以指定在容器中是否对控件进行水平或者垂直放置,比 FlowLayout 要更为灵活 BoxLayout与其他布局管理器稍有不同,必须向其构造函数中传递容器实例的引用,由该容器使用BoxLayout.另外必须指定BoxLayout中组件的布局方式:垂直排列(按列)或水平排列(按行).用水平组件和垂直组件的不同组合嵌套多面板的作用类似于 GridBagLayout,但没那么复杂.1.

java swing 多个JLabel和多个JTextField的对齐

问题描述 java swing 多个JLabel和多个JTextField的对齐,如下图所示,把JLabel都放在一个垂直的box1中,把JTextField放在另一个垂直的box2中,然后把box1和box2放在一个水平的boxA中.可是就如下图所示,文字和文本框对不齐."初始信息素"."迭代次数"."蚂蚁数量"都太下了,"期望因子beta"和"信息素残留参数rho"都太上了.可是如果把一行中的JLabe

请教Java Swing中JTextarea问题

问题描述 请问如果控制JTextArea,使其弹出的时候窗口不超过屏幕之外. 问题补充:JtextArea是放在JDialog中,菜鸟不懂,给大家添误会了 解决方案 简单的例子import java.awt.BorderLayout;import java.awt.Frame;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.

Java Swing 中的表格问题

问题描述 先看代码:importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.Component;importjava.awt.EventQueue;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;imp