JEdi​​torPane字体大小未精确设置

时间:2014-04-30 11:57:34

标签: java swing wysiwyg jeditorpane

我正在实现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);
        }
    };

请帮忙。

0 个答案:

没有答案