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

関連する問題