2016-06-21 5 views
1

HTML을 표시하기 위해 스크롤 가능한 JTextPane을 만들려고합니다. 나는 크기를 올바르게하려고 노력하는 것을 제외하고는 그것을 가지고있다. 내가하는 일과 상관없이 나는 창 너비에 영향을 줄 수 없다.HTML이있는 JtextPane이 너무 넓습니다.

JTextPane tp=new JTextPane(); 
     tp.setSize(300,300); 
     tp.setContentType("text/html"); 
     HTMLDocument html=(HTMLDocument) tp.getDocument(); 
     html.putProperty("IgnoreCharsetDirective", new Boolean(true)); 
     HTMLEditorKit htmle=(HTMLEditorKit) tp.getEditorKit(); 
     try { 
      htmle.insertHTML(html,html.getLength(),content,0,0,null); 
     } catch (BadLocationException | IOException e) { 
      // Should not get here 
      e.printStackTrace(); 
     } 
     JScrollPane scroll=new JScrollPane(tp,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
     scroll.setSize(200,300); 
     JOptionPane.showMessageDialog(null,scroll,title,JOptionPane.INFORMATION_MESSAGE); 

나는 JTextPane가와가 JScrollPane 만도 효과 폭에에는 setSize 시도했습니다. 그것은 지정된 크기 내에서 HTML을 포장하기보다는 가장 긴 < p> 태그의 폭으로 너비를 설정하고자하는 것 같습니다. 내가 찾지 못하는 것은 JOptionPane의 크기를 설정하는 방법이지만 구성 요소의 크기가 올바르다면 필요하지 않아야한다는 것이 이해됩니다. 누군가 내가 누락 된 것을 말해 줄 수 있습니까? TIA.

+0

당신이 보여줄 수 귀하의 JTextPane 대신에 setPreferredSize를 사용하려면? 아마도 레이아웃 관리자의 문제 일 것입니다. – Sharcoux

+0

JScrollPane이 마지막 줄에 추가되었습니다. JOptionPane 스테이트먼트입니다. –

+0

오, 죄송합니다. 좋아, 문제는 JOptionPane이 pack()을 호출하고 pack()이 크기를 신경 쓰지 않는다는 것이다. preferredSize 만 고려합니다. 내가 대답 할게. – Sharcoux

답변

0

JOptionPanepack()입니다. pack()은 그 자식의 preferredSize을 사용하여 너비와 높이를 결정합니다. 기본적으로 JTextPane의 기본 너비는 가장 긴 줄의 너비입니다. 당신은

  • 를이 동작을 변경 또는 재정의 JTextPane
  • getPreferredSize 방법 또는 당신이로가 JScrollPane을 추가 할 경우 setSize
+0

빙고! 그게 그랬어 (옵션 2). 감사. –