1Java swing 如何让垂直滚动条始终在最下面?
(1)JTextPane
见图说话:?
?上图中箭头所指的是一个JTextPane?
JTextPane 被包在JScrollPane 中
//执行结果显示窗口 resultTextPane = new AssistPopupTextPane(); resultTextPane.setContentType("text/html; charset=UTF-8"); resultTextPane.setEditable(false); DefaultCaret caret = (DefaultCaret)resultTextPane.getCaret(); caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); scrollPane.setViewportView(resultTextPane);
?
在接收到推送消息时,JTextPane中的内容会动态的增加,增加到一定程度,会产生垂直滚动条,那么如何使垂直滚动条始终保持在JTextPane 最底部呢??
这样就永远可以看到最新的推送消息了.?
实现:?
(1)设置JTextPane 的策略
DefaultCaret caret = (DefaultCaret)resultTextPane.getCaret(); caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
?
(2)当JTextPane 动态增加内容时
resultTextPane.setSelectionStart(resultTextPane.getText().length()); JScrollBar vertical = scrollPane.getVerticalScrollBar(); vertical.setValue( vertical.getMaximum());
?说明:?
resultTextPane 的类型是JTextPane;?
?
(2)JTextArea
resultTextArea = new AssistPopupTextArea(); resultTextArea.setEditable(false); resultTextArea.setLineWrap(true); resultTextArea.setWrapStyleWord(true); DefaultCaret caret = (DefaultCaret)resultTextArea.getCaret(); caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); scrollPane.setViewportView(resultTextArea); resultTextArea.setColumns(10);
?DefaultCaret caret = (DefaultCaret)resultTextArea.getCaret();
? ? ? ? caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
?
注意:JTextPane和JTextArea的区别:?
JTextPane 可以设置html样式;?
JTextArea无法设置成为html样式
?
项目采用maven 构建?
源代码下载地址:?
项目源代码
依赖的jar包:?
依赖包
?
?
原文:http://hw1287789687.iteye.com/blog/2219076