2012-02-15 2 views
9

私は質問をしてからしばらくしています!Java JLabel、次の行にテキストを区切りますか?

私はJLabelsが使用されているJavaでアプリケーションを開発しています。とにかく、あなたが下の図から見ることができないかもしれないので、Category Testと言うテキストは切り捨てられ、代わりにCategor...と言って終わる。ラベルの幅をいっぱいにすると、テキストを「壊す」方法はありますか?ここではイメージがある:

私は

をやった

enter image description here

私はそうのようにJTextPaneを使用:

JTextPane text = new JTextPane(); 
    SimpleAttributeSet attr = new SimpleAttributeSet(); 

    StyleConstants.setAlignment(attr, StyleConstants.ALIGN_CENTER); 

    pane.add(text, c); 

その後、私はとにかく私のテキストが、感謝を追加しました!

+0

私はそこから "Category" Stringを得るでしょう。それはまったく必要ありません。代わりに、あなたのグリッドの上にある単一のJLabelに「カテゴリ」があるかもしれません。 –

+0

ええ、それらはプレースホルダーです。ユーザーは、カテゴリの内容を定義します。 Jeopardyを見たことがありますか? –

答えて

10

JLabelは、デフォルトでそれを行うことはできません。しかし、JLabelはhtmlをいくらかサポートしているので、<html>First Line<br />Second Line</html>という文字のJLabelが2行に表示されます。

回線を分割するコンポーネントが必要な場合は、JTextAreaを参照してください。

+0

今は+1しますが、別の方法が見つからないかどうか確認したいと思います。ありがとう。 –

+0

@Kenはより多くの検索を行いました.HTMLを使用しない限り、 'JLabel'は1行しか表示しません。 – Jeffrey

+0

D:まあ、私は何ができるかを見ていきます。どうもありがとう! –

2

私が思い起こせば、テキストラッピングが必要な場合はJTextAreaを使用する必要があります。 JLabelはそれをしません。

1

JIDE共通レイヤーのオープンソースプロジェクトのStyledLabelコンポーネントはhttp://java.net/projects/jide-oss/にあります。

html JLabelのアプローチの問題は、自動ラップせず、プレーンなJLabelより約20〜40倍遅いということです。

JTextAreaまたはJTextPaneアプローチの問題は、サイズの問題があり、20倍も遅いことです。

StyledLabelはJLabelを拡張します。自動的に行の折り返しは、それが追加する多くの機能の1つに過ぎません。そして、パフォーマンスは普通のJLabelと同じくらい速いです。

希望すると助かります。

関連する問題