【问题标题】:highlighting a specific line from jtextpane突出显示 jtextpane 中的特定行
【发布时间】:2012-04-04 08:53:27
【问题描述】:

我试图突出显示来自JTextPane 的特定行。假设我想突出显示JTextPane 中的第 5 行,如果行相同,如何让 indexOf 突出显示它?

JTextPane 的示例内容,我想从下面突出显示第 5 行和第 11 行,

这段文字来自stackoverflow 这段文字来自stackoverflow 这段文字来自stackoverflow 这段文字来自stackoverflow 这段文字来自stackoverflow 这段文字来自stackoverflow 这段文字来自stackoverflow 这段文字来自谷歌 本文来自雅虎 本文来自雅虎 本文来自雅虎 本文来自雅虎

代码:

//Code to highlight
//text is jtextpane
final static Color HILIT_COLOR = Color.LIGHT_GRAY;
DefaultHighlighter hilit = new DefaultHighlighter();
DefaultHighlightPainter painter = new  
    DefaultHighlighter.DefaultHighlightPainter(HILIT_COLOR);
text.setHighlighter(hilit);

hilit.removeAllHighlights();
String s = text.getText();
try {
    hilit.addHighlight(0, 10, painter);
} catch (BadLocationException ex) {
    Logger.getLogger(TextLines.class.getName()).log(Level.SEVERE, null, ex);
}

【问题讨论】:

  • 你为什么投反对票?如果您不清楚问题,有评论选项,您可以发表评论。
  • +1 用于编辑混乱的文本

标签: java swing highlight


【解决方案1】:

我猜你的模型是HTMLDocument,它并不是真正面向行的。或者,考虑使用JList 和使用JTextPane 的自定义渲染器。

【讨论】:

  • +1 为您的建议。仍在等待获取 indexOf 重复行内容
  • 我提倡使用具有面向行的选择模型的容器,但我已经评论了我对@mKorbel 的approach 的理解。
【解决方案2】:

1) hilit.removeAllHighlights(); 在所有情况下都不能正常工作,您必须填写 arrays of Highlighter[]

2)你已经从JTextComponentstutorial talking about searching in the Document中提取DocumentModel for JTextComponents),然后你can styled text intoJTextPane(我说的是最简单的方法,有一些方法可以确定内容具体的行,这些事情可能会使 JTextComponents 的大小调整变得复杂)

3) 我从JTextComponents@Stanislav 留下关于ColumnsRows 的答案

【讨论】:

  • 为您的努力+1。仍在等待获取 indexOf 重复行内容
  • 认为您必须使用DocumentListener 来跟踪插入的行边界(偏移量和长度)。
  • +1 我想你也知道所有与行/列相关的代码:-) 使用 Javax.text.Utilities.getRowStart()/getRowEnd()
猜你喜欢
  • 2011-07-21
  • 2012-05-15
  • 2013-11-14
  • 2011-08-06
  • 1970-01-01
  • 2016-10-27
  • 2012-08-06
  • 2018-11-06
  • 2012-04-28
相关资源
最近更新 更多