2011-12-14 5 views
1

전체 JTextPane의 색상을 변경하지 않고 JTextPane에서 텍스트 색상을 대체하려고합니다. 나는 이것을 할 수있는 온라인 수업을 찾았지만 그가 제공 한 방법을 실행하기 위해 "ColorPane"객체를 만들려고했을 때 컴파일 된 코드가 작동하지 않았다. 내 노트북은 이제 막 "Windows no-no sound"를 연주했습니다. 그래서 지금 필요한 메소드를 추가하려고하고 있지만 일부 유형 불일치 오류가 발생합니다.JTextPane의 대체 텍스트 색상

다음은 ColorPane 클래스입니다 : 여기

http://www.java2s.com/Code/Java/Swing-JFC/ExtensionofJTextPanethatallowstheusertoeasilyappendcoloredtexttothedocument.htm이 유형 불일치 오류가있는 방법이다 (난 그냥 테이블을 만든 방법 꺼내서) : http://pastebin.com/jWtQK0Va

감사합니다!

답변

1

문제를 살펴보면 JTextPane 내부에 여러 색상이 필요한 것처럼 보입니다. 코드에이 메서드를 넣고 필요에 따라 인수를 제공하면됩니다.

public void appendToPane(String yourText, Color colour) 
    { 
     StyleContext sc = StyleContext.getDefaultStyleContext(); 
     AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, colour); 
     aset = sc.addAttribute(aset, StyleConstants.FontFamily, "Lucida Console"); 

     int len = tPane.getDocument().getLength(); 
     tPane.setCaretPosition(len); 
     tPane.setCharacterAttributes(aset, false); 
     tPane.replaceSelection(yourText); 
    } 

상기 방법은 다음의 수입 사용

  • 수입 javax.swing.text.AttributeSet 단계;
  • import javax.swing.text.SimpleAttributeSet;
  • import javax.swing.text.StyleConstants;
  • import javax.swing.text.StyleContext;
  • import javax.swing.JTextPane;

그리고 tPane은 JTextPane의 Object입니다. 단순히 당신의 이름이 파란 색으로 나타나길 원한다면 appendToPane ("Your Name", Color.BLUE)와 같이 메소드를 호출하십시오; 이제 다른 텍스트를 빨간색으로 표시하려면 appendToPane ("New Text", Color.RED); 메서드를 다시 호출하여 요청한 쿼리를 해결합니다.

감사합니다.

+0

고마워요! minor typo : STyleConstants는 StyleConstants가 아니면 안된다. – adhg