i) 陷入以下问题:
我想读一下该构成部分所在位置的JTextComponent文件的性质。 当有人使用JTextPane时,在护理站返回的特性是不正确的。 更详细来说,归还的特性是护理者的地位减去线数! (现线的留级数)。 另一方面,如果使用JTextArea,结果是正确的。 为了证明这一点,我已经实施了你可以采用的样本方案。
因此,大问题是,在JTextPane一案中,如何获得护理职位的性质?
Why JTextPane does not returns the same caret position as JTextArea, and further more why the character returned by JTextPane is not the one that we can see in the screen? Is the described behavior a bug?
下面你可以找到样本方案的代码,并筛选出非常有趣和意想不到的结果。
www.un.org/Depts/DGACM/index_spanish.htm 利用JTextPane. 第17号行政指示中的文字是......。
Usign a JTextArea. Here i have the caret in the same position as before, but now i get caret position 20 and the return letter is (with is the one expected).
这里,你可以用来看到这种奇怪的行为:
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
line2
line3
line4");
}
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);
}
});
}
}
得到帮助!
PS i am using java 6.