2016-08-12 54 views
0

是否可以在JTextPane中啓用基於空間的換行?如何在JTextPane中啓用基於空間的換行換行?

使用JTextArea不是一個選項,因爲我需要對內容進行樣式設置。

+3

這是JTextPane的默認行爲。這就是說,如果整個單詞不適合在線上,那麼它被包裹在前一個空間。如果您遇到問題,請發佈證明問題的[SSCCE](http://sscce.org/)。 – camickr

回答

1

這是你如何做一個的JTextPane和線路包裝默認的JFrame。正如Camickr所說,這是默認行爲。

package test; 

import java.awt.BorderLayout; 
import javax.swing.JFrame; 
import javax.swing.JTextPane; 
import javax.swing.SwingUtilities; 
/** 
* 
* @author floz 
*/ 
public class Test { 

    public static void main(String[] args) { 

     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       final JFrame mainFrame = new JFrame("test"); 
       mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       final JTextPane field = new JTextPane(); 
       field.setText("qds qljsd qsld qlskd qlkds fqlk sdkf qlskdfqlk sdlf qsld ql sdf qlskd fqks lqksjd f"); 

       mainFrame.getContentPane().setLayout(new BorderLayout()); 
       mainFrame.getContentPane().add(field,BorderLayout.CENTER); 
       mainFrame.setSize(200,200); 
       mainFrame.setVisible(true); 
      } 
     }); 
    } 
} 
0

你可以一個監聽器添加到的JTextPane文件,做了換行類似如下:

pane.getDocument().addDocumentListener(new DocumentListener() 
    { 

      @Override 
      public void insertUpdate(DocumentEvent e) 
      { 
       if(e.getOffset() >= pane.getSize().getWidth()/pane.getFont().getSize()) 
       { 
        String str = pane.getText(); 
        if(str.length() <= str.lastIndexOf(32)) 
        { 
          try 
          { 
           e.getDocument().insertString(str.lastIndexOf(32), "\n", pane.getCharacterAttributes()); 

          } catch (BadLocationException e1) 
          { 
           e1.printStackTrace(); 
          } 
        } 
       }     
      } 

      @Override 
      public void removeUpdate(DocumentEvent e) {} 

      @Override 
      public void changedUpdate(DocumentEvent e) {} 

    }); 
+2

如果框架調整大小導致文本窗格也被調整大小會怎樣?或者如果將多行文本粘貼到文本窗格中?現在硬編碼的換行符會阻止文本重新調整。 – camickr

+0

@camickr:那麼他應該把自己的負擔放入那個?!這個問題沒有提到對調整大小的迴應。我只是給了他一個解決這個問題的基本想法。 –

+0

這就是爲什麼從視圖中分離模型通常是很好的做法。 – Sharcoux