2011-11-15 3 views
3

非常に単純なJLabelのテキストがかなり長いです。
親レイアウトはGridBagLayoutです。
含まれているフレームの幅が特定の値、たとえば160ピクセルを超えないようにします。
私は "html"としてテキストを設定します。そうすれば、JLabelはテキストを複数の行に折り返すことができます。
これで、JLabelの幅を「修正」したいだけです。しかし、私は方法を見つけていない。
Jframeの最大サイズでは、JLabelはレイアウトマネージャによってチェックされないため、「普通の」ソリューションがあるかどうかはわかりません。

非常に単純な例(ちょうど実行するインポートを修正)は状況を示しています。JLabelをGridBagLayoutに変換します。どのように幅を修正するには?

public class SSCE extends JFrame { 

    public static void main(String [] args) { 
     new SSCE().setVisible(true); 
    } 

    public SSCE() { 

     setLayout(new GridBagLayout()); 

     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.gridx = 0; 
     gbc.gridy = 0; 
     gbc.weightx = 1; 
     gbc.weighty = 1; 
     gbc.fill = GridBagConstraints.BOTH; 

     JLabel label = new JLabel("<html>one two three four five six seven eight nine ten eleven twelve thirteen"); 
     add(label, gbc); 

     gbc.gridy=1; 
     JLabel label2 = new JLabel("other content"); 
     add(label2, gbc); 

     pack(); 

    } 

} 

答えて

4

このように、HTMLで幅を指定してみてください。私は、この例では、画素(150px)を指定しましたが、HTML本体の幅が他の方法を指定することができます

String html = 
    "<html><body width='150px'>" + 
    "Some content that will span 150 pixels and then line-wrap as necessary" + 
    "</body></html>"; 
new JLabel(html); 

注意。

+1

@AndrewThompson:えっは?それはちょうど任意の数ですが、ポイントはこのように幅を指定できることです。実際には、あなたは私に[ここ]を見せた人です(http://stackoverflow.com/questions/4083322/how-can-i-create-a-jtextarea-with-a-specified-width-and-the可能な限り-sm/4093402#4093402):) –

+0

@AndrewThompson:Ha:D。あなたの編集を見ましたが、ピクセルがデフォルトであることはわかりませんでした。親のHTMLコンポーネントがないので、相対サイズ( '150%')はここではうまくいかないと賭けていますよね? –

+0

* "..正しい?" *あなたのJREは私のものと同じくらい良いです。あなたはそれを試したとき何が起こったのですか? –

2

JLabelpreferedmaximumのサイズを使用しようとしましたか?

+0

label.setMaximumSize(新しいDimension(80、Integer.MAX_VALUE));もちろん、試しました。それは動作しません。 javadocでは、GridBagLayoutは最大値を考慮していると言われています。おそらく、それは他の状況で最大値を評価します。たとえば、余分なスペースを再配分した場合など...わかりません。このレイアウトマネージャのすべての詳細を理解するのはかなり複雑です。 – AgostinoX

+0

私は最大と希望のサイズはあなたの最大値に等しいと思う、あなたの場合160です。 –

2

同様の質問がありました:

をそして、この答えは正しいものであると考えられる「JLabelのは、それが最大幅を設定することで、テキストだ折り返す作る」:JLabel Max Width Answer

関連する問題