java中JTextPane使輸出字元到指定的寬度換行,並將垂直滾動條的位置移動到輸出的最後位置...

weixin_33778544發表於2014-09-23
 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中的插入符的位置移動到文字的末端!
              }
       

 

相關文章