다음 문제가 발생했습니다 :JTextPane의 캐럿 위치가 올바르지 않습니다. 버그 또는 예상되는 동작?
구성 요소의 캐럿 위치에있는 JTextComponent 문서의 문자를 읽고 싶습니다. JTextPane을 사용할 때 캐럿 위치에서 반환 된 문자가 올바르지 않습니다. 좀 더 자세히 설명하자면 문자는 캐럿 위치에서 줄 수를 뺀 것입니다. (캐럿 위치 - 현재 행 번호). 반면에 내가 JTextArea를 사용할 때 결과는 정확합니다 ... 이걸 보여주기 위해 당신이 가지고 놀 수있는 샘플 프로그램을 구현했습니다.
그래서 큰 질문은 JTextPane의 경우 캐럿 위치의 특성을 어떻게 얻을 수 있습니까?
JTextPane가 JTextArea와 같은 캐럿 위치를 반환하지 않는 이유와, JTextPane에 의해 반환 된 문자가 화면에서 볼 수있는 문자가 아닌 이유를 자세히 설명합니다. 설명 된 동작이 버그입니까? 아래에서
는 JTextPane가 사용하기 매우 재미 있고 예기치 않은 결과
의 샘플 프로그램의 코드뿐만 아니라 스크린 샷을 찾을 수 있습니다. CARET 위치 17의 문자는 e입니다. 아니 ...
alt text http://img405.imageshack.us/img405/2746/jtextpane.jpg
Usign JTextArea에
. 여기에 전과 같은 위치에 캐럿이 있습니다. 그러나 이제 캐럿 위치 20을 얻었고 반환 문자는 \ r \ n입니다 (예상 한 것과 함께).import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
import java.awt.event.*;
public class Example extends JFrame {
// use this instead of JTextPane to see the difference
// JTextComponent testingArea = new JTextArea(5,10);
JTextComponent testingArea = new JTextPane();
JButton button = new JButton("test");
JTextComponent resultArea = new JTextField(20);
public Example() {
initialise();
testingArea.setText("line1\r\nline2\r\nline3\r\nline4");
}
private void initialise() {
testingArea.setPreferredSize(new Dimension(100,100));
setLayout(new FlowLayout());
getContentPane().add(testingArea);
getContentPane().add(new JLabel("answer"));
getContentPane().add(resultArea);
getContentPane().add(button);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
int caretPosition = testingArea.getCaretPosition();
char result = testingArea.getText().charAt(caretPosition);
resultArea.setText("Char at caretPosition " + caretPosition + " is " + result);
}catch (Exception e2) {
e2.printStackTrace();
resultArea.setText("ERROR");
}
}
});
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
final Example ex = new Example();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
ex.pack();
ex.setVisible(true);
}
});
}
}
감사를 도움 :
다음 alt text http://img809.imageshack.us/img809/5323/jtextarea.jpg은이 이상한 행동을보고 놀 수있는 코드입니다!
PS 내가 사용하고 자바는 6
감사합니다 (alain.janinm, StanislavL). – Pitelk