JLabel의 줄 바꿈


107

줄 바꿈을 JLabel어떻게 표시 할 수 있습니까?

예를 들어, 내가 원하는 경우 :

안녕하세요!
ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ

이것이 내가 지금 가지고있는 것입니다.

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

표시되는 내용은 다음과 같습니다.

안녕하세요!

이 질문이 멍청한 질문이라면 용서 해주세요. 저는 스윙 기본 사항을 배우는 중입니다.


1
확실히 멍청한 질문이 아닙니다. html이 스윙에서도 가능하다는 것을 알아내는 데 시간이 걸렸습니다.
사이먼 Baars

답변:


174

문자열을로 둘러싸고 <html></html>줄을 <br/>.

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

3
약간의 수정 : <br> 대신 <br /> 사용 ... 이것은 권장되는 방법입니다 (닫는 태그를 놓치지 않기 위해) ... 행복한 코딩 ...
Nitin Bansal

6
@NitinBansal 사실 새로운 버전의 HTML에서는 <br>로 두는 것이 좋습니다. 이를 무효 태그라고합니다. <br /> 이전 버전과의 호환성을 위해 여전히 작동합니다.
gsingh2011

@ gsingh2011 : 확인 ... 그게 더 나은 :-)
니틴 반살

3
JLabel이 기본적으로 줄 바꿈을 지원하지 않는 이유는 무엇입니까?
ApproachingDarknessFish

2
실제로 html 태그를 닫을 필요도 없습니다. 런타임에 텍스트를 추가해야하는 경우이 작업이 훨씬 간단 해집니다!
Roberto

9

시도해 볼 수 있습니다.

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에 대한 신뢰할 수있는 스 니펫이 있습니다!



2

넌 할 수있어

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

적절한 경우 자동으로 포장됩니다.


2

JIDE MultilineLabel을 추천 해 주신 Aakash에게 감사드립니다. JIDE의 StyledLabel도 최근 여러 줄을 지원하도록 향상되었습니다. 다른 많은 훌륭한 기능이 있기 때문에 MultilineLabel보다 권장합니다. 아래에서 StyledLabel에 대한 기사를 확인할 수 있습니다. 여전히 무료이며 오픈 소스입니다.

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


1

JLabel은 실제로 일부 초보적인 HTML을 표시 할 수 있기 때문에 개행 문자 사용에 응답하지 않습니다 (예 : System.out과 달리).

해당 HTML을 넣고를 사용 <BR>하면 개행 문자가 표시됩니다.


한숨 나는 당신의 HTML을 이스케이프하기 위해 백틱을 추가하려고했지만 적어도 6 문자를 추가하지 않으면 편집 할 수 없다고 말합니다.
AnnanFay 2011

1
@Annan HTML에서는 필요하지 않습니다. 당신이 말하는 것은 XHTML을 지원하는 것입니다. stackoverflow.com/questions/1946426/html-5-is-it-br-br-or-br
b1nary.atr0phy 2013 년

@ b1naryatr0phy na, 문제가 수정되었습니다. :) 원본 게시물에는 게시물 <br>의 문자 줄 바꿈으로 스택 오버플로 형식이 지정된 문자 태그가 있습니다.
AnnanFay 2013 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.