2011-08-23 12 views
7

JTextAreaとは異なり、JTextPaneには行折り返しをオフにするオプションがありません。 で行の折り返しを無効にすると、solutionが見つかりましたが、このような単純な問題ではあまりにも冗長であるようです。これを行うより良い方法はありますか?JTextPane行の折り返し

答えて

10

No Wrap Text Paneを参照してください。リンクから含まれるコードは次のとおりです。これは http://java-sl.com/wrap.html

+1

: - これは言って再びgetPreferredSize()をオーバーライドすることによって解決することができる「いいえ、本当に私たちは常に実際の推奨サイズが欲しいです」。 – Jeffrey

+0

@Jeffreyは、XP上でJDK6_7(およびそれ以前のバージョン)を使用して私にとってうまく動作します。私はそれが動作しない場合、私はブログのエントリを作成するすべての手間に行くとは思わない。どのようにテストしたかを示すSSCCEを投稿してください。 – camickr

+0

画像が掲載されたSSCCE – Jeffrey

2

希望はまた、代わりに、それはgetScrollableTracksViewportWidth()を上書きし、JPanelJTextPaneをラップする必要はない代替ソリューションを提供します。私はその解決策を好んだが、それは私のためにはうまくいかなかった - ビューポートがJTextPaneの最小幅よりも狭くなってもラッピングが起こることに気づいた。

私は、getPreferredSize()を無効にして、ビューポートが狭すぎるときに、好みの幅ではなく最小幅を返すようにすることを試みるようにしました。 `JPanel`がやった中で` JTextPane`をラップする唯一のものは、垂直スクロールバーを無効にした

public class NoWrapJTextPane extends JTextPane { 
    @Override 
    public boolean getScrollableTracksViewportWidth() { 
     // Only track viewport width when the viewport is wider than the preferred width 
     return getUI().getPreferredSize(this).width 
      <= getParent().getSize().width; 
    }; 

    @Override 
    public Dimension getPreferredSize() { 
     // Avoid substituting the minimum width for the preferred width when the viewport is too narrow 
     return getUI().getPreferredSize(this); 
    }; 
} 
+0

これは私が上に投稿した同じ解決策です。 – Jeffrey

0

No Wrap Text Paneを助け

JTextPane textPane = new JTextPane(); 
JPanel noWrapPanel = new JPanel(new BorderLayout()); 
noWrapPanel.add(textPane); 
JScrollPane scrollPane = new JScrollPane(noWrapPanel); 
関連する問題