我正在实现WYSIWYG html编辑器。 我引用this HTMLEditor示例。 但是不同的预定义动作实例用于不同的menuItem。
我有一个JCombobox,其中提到了字体大小
fontSizeJComboBox.setModel(
new javax.swing.DefaultComboBoxModel(new String[]
{ "10", "12", "14", "16", "18", "20", "24", "28", "32", "36", "42", "48" }));
fontSizeJComboBox.addActionListener(customFontSizeAction);
关于字体选择的动作监听器正在调用
class CustomFontSizeAction extends StyledEditorKit.FontSizeAction {
public CustomFontSizeAction() {
super(fontSizeJComboBox.getSelectedItem().toString(),
Integer.parseInt(fontSizeJComboBox.getSelectedItem().toString()));
}
public void actionPerformed(ActionEvent ae) {
JEditorPane editor = getEditor(ae);
if (editor != null) {
int fontSize = Integer.parseInt(fontSizeJComboBox.getSelectedItem().toString());
if (fontSize != 0) {
MutableAttributeSet attr = new SimpleAttributeSet();
StyleConstants.setFontSize(attr, fontSize);
setCharacterAttributes(editor, attr, false);
} else {
UIManager.getLookAndFeel().provideErrorFeedback(editor);
}
}
}
}
但是当我检查是否应用了正确的字体大小时?或者在CaretPosition更新中我想重新选择jCombobox到特定的字体大小,我没有相同的数字。
CaretListener caretListener = new CaretListener() {
@Override
public void caretUpdate(CaretEvent e) {
AttributeSet attributeSet = ((StyledEditorKit) commentTextArea.getEditorKit()).getInputAttributes();
Object bold = attributeSet == null ? null : attributeSet.getAttribute(StyleConstants.Bold);
if (bold != null && Boolean.parseBoolean(bold.toString())) {
// enable bold button
}
Object italic = attributeSet == null ? null : attributeSet.getAttribute(StyleConstants.Italic);
if (italic != null && Boolean.parseBoolean(italic.toString())) {
// enable italic button
}
Object underline = attributeSet == null ? null : attributeSet.getAttribute(StyleConstants.Underline);
if (underline != null && Boolean.parseBoolean(underline.toString())) {
// enable underline button
}
Object fontSize = attributeSet == null ? null : attributeSet.getAttribute(StyleConstants.FontSize);
if (fontSize != null && Integer.parseInt(fontSize.toString()) > 0) {
fontSizeJComboBox.setSelectedItem(fontSize);
}
jLabel1.setText("" + fontSize);
System.out.println("Font Size = " + fontSize);
}
};
请帮忙。