如何在JTextArea

时间:2016-05-19 14:41:44

标签: java highlight jtextarea bold italic

我有这个笔记本课,我一直在努力。我现在遇到两个问题:

1:粗体和斜体特定文本

我的工具栏中有两个图标,当您单击它时会使文本以粗体或斜体显示。所有这些都很好,但是,它总是选择文档中的所有文本而不是专门选择的文本。有没有办法可以使用左键单击鼠标的蓝色突出显示以粗体或斜体显示特定文本?这是粗体抽象动作的代码。斜体看起来完全一样,除了斜体。

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;
        }

    }
};

2突出显示文字

我想添加一个实际荧光笔,它只会绘制用户选择黄色的某些单词组。我已经阅读了关于此的Oracle页面,我仍然不确定使用它。我看到很多人搜索特定单词并以这种方式突出显示它的例子,但我不打算强调这些具体的单词。我希望用户决定要突出显示哪个文本。

Action Highlight = new AbstractAction("Highlight", new ImageIcon("highlighter.png"))
{
    public void actionPerformed(ActionEvent e) throws BadLocationException
    {
        Highlighter highlighter = area.getHighlighter();
        HighlightPainter painter = new DefaultHighlighter.DefaultHighlightPainter(Color.RED);
        highlighter.addHighlight(0 , 6, painter);
    }
};

上面的代码是我从其他一些在线教程中学到的东西,然而,BadLocationException在Abstract Action中不能正确编译,所以这看起来不是一个可行的选项。

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

actionPerformed不会抛出任何已检查的异常。 只需删除异常并将其捕获到方法中。

public void actionPerformed(ActionEvent e)
{
  try {
    Highlighter highlighter = area.getHighlighter();
    HighlightPainter painter = new DefaultHighlighter.DefaultHighlightPainter(Color.RED);
    highlighter.addHighlight(0 , 6, painter);
  catch(throws BadLocationException ex) {
    ex.printStackTrace();
  }
}

}