2016-11-25 17 views
0

동적 텍스트를 표시하는 JLabel이 있습니다. 이 텍스트는 매우 길거나 짧을 수 있습니다. 텍스트를 줄 바꿈하고 싶습니다.이 방법으로 시도하고 있습니다.JLabel에 텍스트 줄 바꿈

panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS)); 
    panel1.setMaximumSize(new Dimension(500, 150)); 
    .... 
    lblInfo=new JLabel(); 
    lblInfo.setText("<html><b>Q: "+ infoObj.getText()+"</b></html>"); 
    ... 
    panel1.add(lblInfo); 

하지만이 방법은 효과가없는 것 같습니다. 긴 텍스트가 오면,이 JLabel은 (패널의 크기를 초과하는) 스크린 밖으로 나가고, 나는 그 끝 부분 만 볼 수 있습니다. 누군가 문제를 파악하는 데 도움을 줄 수 있습니까?

레이블 대신 JTextField를 사용하여 stackoverflow에 대한 해결책을 찾았습니다. 하지만 내 프로젝트의 일부 요구 사항으로 인해, 나는 내 경우에 JLabel 자체를 사용해야합니다. 제발 도와주세요. 긴 텍스트가 올 때

+1

[이 답변]에서 볼 수 있듯이 폭을 제시하는 것이 필요하다 (http://stackoverflow.com/a :

당신이 포럼에서 찾을 수있을 것이다 제안은 포장과 함께 JTextArea을 사용하는 것입니다/7861833/418556). –

답변

3

이 JLabel의 그냥 당신이 실제 텍스트에 <br>이있을 때 예, 텍스트 만 바꿈됩니다 화면

의 외출. 텍스트 시작 부분의 <br>은 아무 작업도 수행하지 않습니다.

내가 대신 라벨

나는 그것을 의심

의 JTextField를를 사용하여 유래에 대한 몇 가지 해결책을 발견했다. JTextField 항상 텍스트를 한 줄로 표시합니다.

JTextArea textArea = new JTextArea(5, 20); 
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
textArea.setLineWrap(true); 
textArea.setWrapStyleWord(true); 
+0

* "실제 텍스트에 '
'이있을 때만 텍스트가 바뀝니다. 텍스트 시작 부분의 '
'은 아무 작업도 수행하지 않습니다."* OP는 굵게, 마침을 사용하지 않기 위해 마크 업을 사용합니다. . 2) 중단은 HTML 텍스트를 래핑하는 유일한 방법도 아니고 최선의 방법도 아닙니다. CSS 폭은 더 좋습니다. –

+0

@Andrew 예 텍스트를 굵게 표시했습니다. JLabel에서 텍스트를 줄 바꾸기에
을 추가하려면 동적으로 가져온 텍스트 사이에 텍스트를 넣어야합니다. 그럼 다른 옵션은 무엇입니까? JLabel의 크기를 설정하려고했습니다. 그러나 텍스트가 매우 길면 크기가 오버 플로우되고 줄 바꿈하지 않습니다. – developer3

+0

* "그래서 다른 옵션은 무엇입니까?"* CSS를 사용하여 HTML 본문의 너비를 설정합니다. [이 답변] (http://stackoverflow.com/a/14011645/418556)에서 링크 된 예제를 참조하십시오. –