私は JTextPane を持っており、太字フォントを表すチェックボックスがあります。したがって、チェックボックスがオンになっている場合は、JTextPane に入力したものを太字にする必要があります。JTextPane のフォント全体を変更したくありません。次の文字を太字に設定したいだけです。私はこれを作りました、そしてそれは動作します:
///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)
たが、doc.setCharacterAttributes(doc.getLength()-1,1, ns, true)
うまくkeyReleased
いきません。そうするとうまくいきません。つまり、最初に入力したものが表示され、それが変化するのがわかり、速く入力すると一部の文字の属性が変更されません。それで、これを行うためのより良い方法を知っている人はいますか?