2011-10-27 8 views
1

これは私の最後の質問とよく似ていますが、JPanelでやっています。JPanel(固定サイズ)の中にJEditorPaneを表示しようとしています。 (これは私がcardlayoutを使用し、別のディスプレイでパネルを切り替えるためのものです)。エディタペインに渡すHTML文字列内のテキストが途切れずに改行されているように見えますが、すべてを再び表示することができます。すなわち、それは単にスクリーンからはみ出す。 setSizeメソッドはペインのサイズに関係していないようですね?JPanel内のJEditorPaneのサイズを固定

私は異なるサイズの画面用にこのアプリを作っていますので、テキストが新しい行に折り返され、画面サイズに合っていることが重要です!これは、EditorPaneがJFrameの中に直接存在し、JPanelには含まれていないときに機能します。

JEditorPane pane = new JEditorPane(); 
    pane.setEditable(false); 
    HTMLDocument htmlDoc = new HTMLDocument() ; 
    HTMLEditorKit editorKit = new HTMLEditorKit() ; 
    pane.setEditorKit (editorKit) ; 
    pane.setSize(size); 
    pane.setMinimumSize(size); 
    pane.setMaximumSize(size); 
    pane.setOpaque(true); 
    pane.setText("<b><font face=\"Arial\" size=\"50\" align=\"center\" > Unfortunately when I display this string it is too long and doesn't wrap to new line!</font></b>"); 
    bg.add(pane, BorderLayout.CENTER); 

感謝サム

+0

http://stackoverflow.com/questions/5462798/java-se-jeditorpane-not-wrapping-text-on-resize-when-using-miglayout – Mead3000

答えて

5
..."Unfortunately when I display this string it is too long and doesn't wrap to new line!" 

body要素のスタイルを使用して幅を設定します(this example)。

+0

+1を見てみましょうまあ、それは正しい答えです。実際に私はsetXXXSizeを使用しない理由についてアドバイスしました。 – Heisenbug

+0

HTMLコンテンツ文字列を変更できる場合は+1 – StanislavL

3

さて、あなたはあなたのアプリケーションからsetXXXSizeメソッドを使用することはありませんSHOLD。このthreadを参照してください。

ちょうど少数の考慮事項:

  1. それはLayoutManagerの位置決め次第です、あなたはすべてのLayoutManagersはのpreferredSizeが値の世話をされない
  2. 明示的に指定するべきではありませんので、コンポーネントの適切なサイズを設定しますコンポーネント。
  3. LayoutManagerが優先サイズを処理しても、明示的にそれらのメソッドを使用するのは間違っています
  4. 明示的にサイズを使用する場合は、すべてのコンポーネントを含む親フレームのみでサイズを使用します。
  5. LayoutManagerが正しい方法でコンポーネントを配置しない場合は、別のLayoutManagerを使用するか、独自のコンポーネントを実装します。

注:

私は特定の状況でsetXXXmethodsを使用することを知っているが正常に動作するようです。それが間違っていることを理解する前に、私はかなり長い間それをやりました。それを避けるようにしてください。まもなくまたは遅れて、あなたはリファクタリングのための多くのコードを持っています。

関連する問題