Стили в JTextPane - Java
Формулировка задачи:
Как сделать что бы в JTextPane стиль и цвет менял только выделенный текст?
public static void main(String[] args){
JFrame fr = new JFrame ("Блокнот");
JTextPane txp = new JTextPane();
fr.setSize (600,700);
fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fr.setLocationRelativeTo(null);
fr.setVisible(true);
fr.setLayout(new GridBagLayout());
JMenuBar mb = new JMenuBar();
fr.setJMenuBar(mb);
JMenu mi4 = new JMenu("Шрифты");
JMenuItem mc1 = new JMenuItem("Курсив");
mc1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent event) {
txp.setFont(new Font ("", Font.ITALIC, 14));
}
});Решение задачи: «Стили в JTextPane»
textual
Листинг программы
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
StyledDocument doc = (StyledDocument) jTextPane1.getDocument();
int selectionEnd = jTextPane1.getSelectionEnd();
int selectionStart = jTextPane1.getSelectionStart();
if (selectionStart == selectionEnd) {
return;
}
Element element = doc.getCharacterElement(selectionStart);
AttributeSet as = element.getAttributes();
MutableAttributeSet asNew = new SimpleAttributeSet(as.copyAttributes());
StyleConstants.setBold(asNew, !StyleConstants.isBold(as));
doc.setCharacterAttributes(selectionStart, jTextPane1.getSelectedText().length(), asNew, true);
}