Sidewinder


World


FishMusic


LaughingBaby


Sunday, July 13, 2008

java JTextPane test



import java.awt.*;
import javax.swing.*;
public class test extends JFrame{
JTextPane text;
ImageIcon icon = new ImageIcon("c:/android.jpg");
public test(){
text =new JTextPane();
JScrollPane jsp = new JScrollPane(text);
this.getContentPane().add(jsp);
this.setSize(600, 400);
this.setVisible(true);

text.replaceSelection("aaaaaaa\n");
setEndline();
text.replaceSelection("bbbbbbb\n");
setEndline();
text.insertComponent(new JLabel(icon));
}

private void setEndline() {//그냥 억지로 함수 하나 만들었어요.
// TODO Auto-generated method stub
text.selectAll();
//문장의 끝에 무조건 커서 이동하게 설정
text.setSelectionStart(text.getSelectionEnd());
}
public static void main(String[] ar){
test tt = new test();
}
}
문]
텍스트뿐 아니라 이미지처리도 하고 폰트크기나 굵기 등등을 처리하기 위해 텍스트어리어가 아닌 텍스트페인 작업중입니다.
근데 문제가.... 텍스트어리어의 append 와 같은 자동 줄바꿈 기능이 텍스트페인에는 존재하지가 않는다는 것입니다.
즉 aaaaa를 찍고 나면 줄바꿈이 된 후 bbbbb 가 찍히고 또 줄바꿈이 되어 이미지가 삽입되야하는데 그게 아니라 그냥 이전에 삽입했던 스트링문자 바로앞에 삽입되어버리는군요..;;
어떻게 처리해야하죠?? HTML소스를 JTextPane에 집어넣으라고 하던데 자세한 방법은 잘 모르겠습니다.
아래는 제가 짠 갼단한 예제소스입니다.

1 comment:

세민 said...

답변이 조금 늦은거 같군요

JTextPane은 JTextArea와 다르게 문자를 Style로 처리합니다.

문자 추가 방법은 (개행 포함)
JTextPane textPane = new JTextPane();
StyledDocument doc = textPane.getStyledDocument();
try
{
doc.insertString(doc.getLength(), "abc\n", null);
doc.insertString(doc.getLength(), "def\n", null);
}
catch (BadLocationException ble)
{
}
이렇습니다.

자세한 내용은
http://java.sun.com/docs/books/tutorial/uiswing/components/text.html
에서 example index. 로 이동하면 샘플 코드를 받으실 수 있습니다.

Post a Comment