0
我有JTextPane和複選框表示可以說粗體字體。所以如果複選框被選中,我想要我在JTextPane中輸入的任何內容都是粗體。我不想爲JTextPane更改整個字體,我只是想將下一個字符設置爲粗體。我做了這一點,它的工作原理:Java樣式文檔更改屬性爲下一個輸入
///framework is JTextPane
framework.addKeyListener(new KeyListener() {
StyledDocument doc = framework.getStyledDocument();
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
if(boldcheck.isSelected()){
StyleContext sc = new StyleContext();
Style ns = sc.addStyle("a", null);
ns.addAttribute(StyleConstants.Bold, new Boolean(true));
try {
String s = Character.toString(e.getKeyChar());
doc.insertString(doc.getLength(),s, ns);
framework.remove(doc.getLength());
} catch (BadLocationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
///// rest of keylistener
,但我不認爲這是好主意,做
doc.insertString(doc.getLength(),s, ns);
framework.remove(doc.getLength());
我試着用doc.setCharacterAttributes(doc.getLength(),1, ns, true)
但它不會工作,如果我在keyReleased
做doc.setCharacterAttributes(doc.getLength()-1,1, ns, true)
它將工作得很糟糕,我的意思是一個會首先看到我輸入的內容,然後我會看到它的鏈接,如果我輸入的速度很快,它不會更改某些字母的屬性。那麼有誰知道更好的方法來做到這一點?