我正在使用我正在进行的项目中的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'这是不正确的。简单的回答我知道。任何帮助表示赞赏。
答案 0 :(得分:0)
我明白了。是的,下半部分代码完全没必要。
在创建按钮时调用的StyledEditorKit是我需要的才能让它工作。当我试图实现第二个AbstractAction时,在其他2个AbstractActions中发生的事情并没有发生(出于某种原因)。 我的印象是我仍然需要创建另一个粗体动作以加粗文本,但Java使用StyledEditorKit自动处理所有这些。