如何更改某个起点的字体?
我有一个按钮,在某一点切换字体。
示例:
somtext |
按按钮
sometext boldedtext |
所以我发布了事件密钥,但我可以看到更改的字体已经发布了密钥
这是密钥发布的事件
private void textoKeyReleased(javax.swing.event.CaretEvent evt) {
int end = texto.getSelectionEnd();
StyledDocument doc = texto.getStyledDocument();
Style style = texto.getStyle("negra");
if (car==1)
{
StyleConstants.setBold(style, true);
doc.setCharacterAttributes(end-1,end, style, false);
texto.requestFocus();
texto.moveCaretPosition(doc.getLength());
}
if(car==0)
{
StyleConstants.setBold(style, false);
doc.setCharacterAttributes(end-1 ,end, style, false);
texto.requestFocus();
texto.moveCaretPosition(doc.getLength());
}
}
但我明白了
首先
结局 a
更新不是实时的另一种方法:
答案 0 :(得分:0)
KeyListener接口中的密钥释放事件的问题是仅在用户放开密钥时才调用它。在您的代码中,如果用户按住某个键重复它,则只会根据设置的样式修改最后一个字符。此外,在键入过程中,如果用户在释放第一个键之前按下第二个键,则只会更新最后一个字符。
另一种方法是在KeyListener接口的keyTyped方法中调用代码。
还简化了代码。
private void textoKeyReleased(javax.swing.event.CaretEvent evt) {
int end = textPane.getSelectionEnd();
StyledDocument doc = textPane.getStyledDocument();
Style style = textPane.getStyle("negra");
StyleConstants.setBold(style, car == 1);
doc.setCharacterAttributes(end - 1, 1, style, false);
textPane.requestFocus();
}
@Override
public void keyTyped(KeyEvent e) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
textoKeyReleased(null);
}
});
}
答案 1 :(得分:0)
阅读Text Component Features上的Swing教程中的secton,其中介绍了如何为bold属性创建JMenuItem。同样的方法可以用于JButton,因为粗体Action也可以用在按钮中。