java中JTextPane使输出字符到指定的宽度换行,并将垂直滚动条的位置移动到输出的最后位置

复制代码
 SimpleAttributeSet set = new SimpleAttributeSet();
 Document doc = tp.getStyledDocument(); 
 FontMetrics fm = tp.getFontMetrics(tp.getFont());//得到JTextPane 的当前字体尺寸
 int paneWidth = tp.getWidth();//面板的宽度
 String text = new String(bt, 0, len); 
        try
              {
                  for(int i = 0, cnt = 0; i < text.length(); ++i){
                      if((cnt += fm.charWidth(text.charAt(i))) >= paneWidth){//当属出字符的宽度大于面板的宽度时换行,也就是达到JTextPane不会出现水平的滚动条
                          cnt = 0;
                          doc.insertString(doc.getLength(), "\n", set);
                          continue;
                      }
                      doc.insertString(doc.getLength(), String.valueOf(text.charAt(i)), set);
                  }
                  doc.insertString(doc.getLength(), "\n", set);
                  
                  tp.setCaretPosition(doc.getLength());//最简单的设置滚动条的位置到最后输出文本的地方
                                                         //就是将JTextPane中的插入符的位置移动到文本的末端!
              }
       
复制代码

 

posted @   hjzqyx  阅读(1365)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示