2010-04-27 3 views
2

내 응용 프로그램에서 채팅 기능을 구현하려고합니다. 나는 2 JEditorPane을 사용했다. 채팅 히스토리를 유지하기위한 것이고, 다른 것은 JEditorPane에 채팅을 보내기위한 것입니다.Java JEditorPane 형식

JEditorPane은 text/html 유형입니다.

내가 가지고있는 문제는 HTML 사이에 두 개 이상의 문자 사이에 공백을 넣으면 자동으로 파서에 의해 제거된다는 것입니다.

어떻게하면 공백이 제거되지 않을까요?

example: hello    world 

becomes: hello world 

또한 새 메시지를 기록 창에 추가 할 수 있도록 html 태그를 구문 분석해야합니다.

JEditorPane을 사용하는 것보다 더 나은 옵션이 있습니까? JTextPane을 사용하면 구현하기가 더 쉬울까요?

채팅 상자/창에서 대담한 URL 처리 기능을 사용하고 싶습니다.

감사의 말씀과 도움을 받으시기 바랍니다.

편집 : ""을 relavent char로 바꾸려고합니다.

newHome[1] = newHome[1].replace(" ", newChar) 

newChar 값은 무엇이되어야합니까?

편집 :

newHome[1] = newHome[1].replaceAll(" ", " "); 

을하지만 결과를 생산하지 않습니다 : 메신저 시도. 어떤 아이디어?

편집 : @ 토마스 - 감사합니다! 웬일인지 당신의 대답에 메모를 게시 할 수 있습니다.

+0

왜 HTML을 사용합니까? 스타일을 사용하여 텍스트 서식을 지정할 수 있습니다. – Thomas

+0

그래서 나는 필요한 곳에 굵은 글자로 표시 할 수있다. 나는 네가하는 말을 이해하지 못한다. JTextPane을 사용한다는 의미입니까? – iTEgg

+1

예, JTextPane을 사용하는 경우 필요로하는 형식을 지정하기 위해 Parapraph 및 문자 특성을 StyledDocument에 첨부 할 수 있습니다. – Thomas

답변

3

HTML 마크 업을 사용하면 스윙 텍스트 구성 요소에서 간단한 텍스트 서식을 빠르게 얻을 수 있습니다. 그러나 이것이 유일한 방법은 아닙니다.

좀 더 복잡한 방법은 다른 "스타일"(따라서 이름)을 첨부 할 수있는 javax.swing.text.StyledDocument을 사용하는 것입니다. 스타일은 기본적으로 텍스트가 굵게 표시되거나 기울임 꼴로 표시되어야하는지 또는 어떤 색으로 표시되어야하는지 등의 속성 집합입니다.

JTextPane은 스타일을 처리하기위한 여러 가지 편리한 방법을 제공하며 JEditorPane의 서브 클래스이므로 기존 코드에 원활하게 통합되어야합니다. 예를 들어,이 같은 것을 사용할 수 있습니다, 같은 과감한 JTextPane가 내의 텍스트의 일부를 표시 : 마찬가지로

JTextPane textPane = new JTextPane(); 
Style bold = textPane.addStyle("bold", null); 
StyleConstants.setBold(bold, true); 

textPane.setText("I'll be bold."); 

textPane.getStyledDocument().setCharacterAttributes(8, 4, bold, true); 

을, 당신은 예를 들어, 두 번째 스타일을 정의 할 수 있습니다 파란색 밑줄이 그어진 글꼴을 사용하며 하이퍼 링크를 표시하는 데 사용할 수 있습니다.

불행히도, 단점은 링크의 메커니즘을 직접 처리해야한다는 것입니다. javax.swing.event.HyperlinkListener 그 밖의 기존 인프라를 사용할 수 있지만 마우스 클릭을 감지해야합니다. 커서를 호버링하고 손 모양 기호 등으로 변경하는 경우에도 마찬가지입니다.

관련 문제