JTextPaneでスペースベースの行折り返しを有効にすることはできますか?JTextPaneでスペースベースの行折り返しを有効にするには?
コンテンツをスタイルする必要があるため、JTextAreaを使用することは選択できません。
JTextPaneでスペースベースの行折り返しを有効にすることはできますか?JTextPaneでスペースベースの行折り返しを有効にするには?
コンテンツをスタイルする必要があるため、JTextAreaを使用することは選択できません。
あなたは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);
}
});
}
}
あなたは次のような行の折り返しを行う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) {}
});
これはJTextPaneのデフォルトの動作です。つまり、単語全体が行に収まらない場合、それは前のスペースにラップされます。問題がある場合は、問題を示す[SSCCE](http://sscce.org/)を投稿してください。 – camickr