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样式