正确实现StyledEditorKit.UnderlineAction()

时间:2016-05-20 14:22:57

标签: java text jtextpane

我正在使用我正在进行的项目中的StyledEditorKit。我使用了StyledEditorKit.BoldAction()和StyledEditorKit.ItalicAction()。现在我想使用StyledEditorKit.UnderlineAction()。

我制作了他们将要使用的JButtons:

    JButton bold = new JButton(new StyledEditorKit.BoldAction());
    tool.add(bold);
    JButton italic = new JButton(new StyledEditorKit.ItalicAction());
    tool.add(italic);
    JButton underline = new JButton(new StyledEditorKit.UnderlineAction());
    tool.add(underline);

他们每个人都有自己的用途,我在setText(null)并为按钮分配一个Icon。然后当我尝试在AbstractAction中使用这些按钮时:

Action Bold = new AbstractAction("Bold", new ImageIcon("bold.png"))
    {
        public void actionPerformed(ActionEvent e)
        {
            if(bolded == false)
            {
                area.setFont(area.getFont().deriveFont(Font.BOLD));
                bolded = true;
            }
            else
            {
                area.setFont(area.getFont().deriveFont(Font.PLAIN));
                bolded = false;
            }

        }
    };

Action Italic = new AbstractAction("Italic", new ImageIcon("italic.png"))
{
        public void actionPerformed(ActionEvent e)
        {
            if(italiced == false)
            {
                area.setFont(area.getFont().deriveFont(Font.ITALIC));
                italiced = true;
            }
            else
            {
                area.setFont(area.getFont().deriveFont(Font.PLAIN));
                italiced = false;
            }
        }
};

Action underline = new AbstractAction("underline", new ImageIcon("underline.png"))
{
    public void actionPerformed(ActionEvent e)
    {
        if(underlined == false)
        {
            area.setFont(area.getFont().deriveFont(Font.UNDERLINE));
            underline = true;
        }
        else
        {
            area.setFont(area.getFont().deriveFont(Font.PLAIN));
            underline = false;
        }
    }
};

前两个AbstractActions工作正常。我使用的最后一个

area.setFont(area.getFont().deriveFont(Font.UNDERLINE);
然而

不正确。我还没有在oracle上找到实际的实现(我可能在错误的地方查找?),但我认为这就是我使用'UNDERLINE'这是不正确的。简单的回答我知道。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我明白了。是的,下半部分代码完全没必要。

在创建按钮时调用的StyledEditorKit是我需要的才能让它工作。当我试图实现第二个AbstractAction时,在其他2个AbstractActions中发生的事情并没有发生(出于某种原因)。 我的印象是我仍然需要创建另一个粗体动作以加粗文本,但Java使用StyledEditorKit自动处理所有这些。