2011-08-23 4 views
7

JTextArea과 달리 JTextPane에는 줄 바꿈 기능을 해제 할 수있는 옵션이 없습니다. JTextPane에서 줄 바꿈 기능을 끄기 위해 solution을 찾았지만 너무 간단한 것처럼 보입니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?JTextPane 줄 바꿈

답변

10

No Wrap Text Pane을 참조하십시오. 다음은 링크에서 포함 된 코드입니다.

JTextPane textPane = new JTextPane(); 
JPanel noWrapPanel = new JPanel(new BorderLayout()); 
noWrapPanel.add(textPane); 
JScrollPane scrollPane = new JScrollPane(noWrapPanel); 
+1

에'JTextPane' 포장 유일한 것은'JPanel' 수직 스크롤 막대를 해제했다 않았다. – Jeffrey

+0

@Jeffrey, XP에서 JDK6_7 (및 이전 버전)을 사용하여 잘 작동합니다. 나는 그것이 작동하지 않으면 블로그 항목을 만드는 모든 문제에 갈 것이라고 생각하지 않습니다. 테스트 한 내용을 보여주는 SSCCE를 게시하십시오. – camickr

+0

이미지가 게시 된 SSCCE. – Jeffrey

0

No Wrap Text PaneJPanelJTextPane 포장이 필요없는 대안 솔루션을 제공하는 데 도움이됩니다. 나는 그 솔루션을 선호하지만 그것은 나에게 잘 맞지 않는다. 뷰포트가 JTextPane의 최소 너비보다 더 좁아지면 줄 바꿈이 계속 일어난다는 것을 알았다.

getPreferredSize()getPreferredSize()을 덮어 쓰는 경우,보기 너비가 너무 좁아서 원하는 너비 대신 최소 너비가 반환되면 문제가 해결됩니다. 이것은 말을 다시 getPreferredSize()를 재정 의하여 해결 될 수 있습니다 '정말, 아니 - 우리는 항상 실제 기본 크기를 원하는'

public class NoWrapJTextPane extends JTextPane { 
    @Override 
    public boolean getScrollableTracksViewportWidth() { 
     // Only track viewport width when the viewport is wider than the preferred width 
     return getUI().getPreferredSize(this).width 
      <= getParent().getSize().width; 
    }; 

    @Override 
    public Dimension getPreferredSize() { 
     // Avoid substituting the minimum width for the preferred width when the viewport is too narrow 
     return getUI().getPreferredSize(this); 
    }; 
}