【问题标题】:How to use a highlighter in JTextArea如何在 JTextArea 中使用荧光笔
【发布时间】:2016-09-16 12:49:35
【问题描述】:

我有一个我一直在学习的笔记本课程。我现在面临两个问题:

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 在抽象操作中时无法正确编译,因此这看起来不是一个可行的选择。

感谢任何帮助!

【问题讨论】:

标签: java highlight jtextarea bold italic


【解决方案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();
  }
}

}

【讨论】:

    猜你喜欢
    • 2017-02-25
    • 2011-01-25
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多