web-dev-qa-db-ja.com

JLabelの改行

JLabelに改行を表示するにはどうすればよいですか?

たとえば、私が望んだ場合:

"こんにちは世界"
何とか何とか何とか

これは私が今持っているものです:

JLabel l = new JLabel("Hello World!\nblahblahblah", SwingConstants.CENTER);

これは表示されるものです:

Hello World!

これが馬鹿げた質問なら許してください、私はちょうどいくつかのSwingの基本を学んでいます...

94
mportiz08

文字列を<html></html>で囲み、<br/>で行を区切ります。

JLabel l = new JLabel("<html>Hello World!<br/>blahblahblah</html>", SwingConstants.CENTER);
157
freitass

これを試すことができます:

myLabel.setText("<html>" + myString.replaceAll("<","&lt;").replaceAll(">", "&gt;").replaceAll("\n", "<br/>") + "</html>")

これを行う利点は次のとおりです。

  • すべての改行を必ず<br/>に置き換えます。
  • 最終的な<>をそれぞれ&lt;&gt;で自動的に置き換え、レンダリングの混乱を防ぎます。

それは何ですか:

  • "<html>" +は最初にhtmlタグを追加します
  • .replaceAll("<", "&lt;").replaceAll(">", "&gt;")は、便宜上<および>をエスケープします
  • .replaceAll("\n", "<br/>")はすべての改行をbr(HTML改行)タグで置き換えます
  • ...そして+ "</html>"は最後にhtmlタグを閉じます。

追伸:このような古い投稿を目覚めさせて大変申し訳ありませんが、Javaの信頼できるスニペットがあります!

8
TheSola10

できるよ

JLabel l = new JLabel("<html><p>Hello World! blah blah blah</p></html>", SwingConstants.CENTER);

必要に応じて自動的にラップします。

2
nevster

Jide Open Source ComponentsでMultilineLabelコンポーネントを使用できます。

http://www.jidesoft.com/products/oss.htm

2
Aakash

JIDE MultilineLabelを推奨してくれたAakashに感謝します。 JIDEのStyledLabelも最近強化され、複数行をサポートしています。他の多くの優れた機能があるため、MultilineLabelよりもお勧めします。以下のStyledLabelの記事をご覧ください。まだ無料でオープンソースです。

http://www.jidesoft.com/articles/StyledLabel.pdf

2
jidesoft

JLabelは実際には初歩的なHTMLを表示することができるため、改行文字(たとえばSystem.outとは異なります)の使用に応答しません。

対応するHTMLを挿入して<BR>を使用すると、改行を取得できます。

1
Uri