2016-08-12 53 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