我在JScrollPane中有一个JEditoPane。我有一些包含一些预定义标记的文本内容。我将这些令牌的位置存储在数据库中。 当我将文本内容设置为JEditorPane时,我使用HTML嵌入了令牌。我还添加了HTML中断行来格式化内容。
现在当我想滚动到其中一个突出显示的标记时出现问题。在使用setCaretPosition(int)时,我存储在数据库中的令牌的起始位置似乎不匹配。我知道这可能是因为我在JEditorPane文档中的内容与HTML混合在一起。
那么有没有办法在JEditorPane内容中搜索字符串,然后以某种方式获得发现字符串的插入位置?
答案 0 :(得分:1)
你就是这样做的(忽略不使用最佳实践;)) -
public static void main( String[] args ) {
final JEditorPane jEditorPane = new JEditorPane( "text/html", "<h1>This is some header</h1>After this text would be the CARRET<br>This is some more text<br>And more" );
final JScrollPane jScrollPane = new JScrollPane( jEditorPane );
final JFrame jframe = new JFrame( "HHHHHH" );
jframe.add( jScrollPane );
jframe.setSize( new Dimension( 200, 200 ) );
jframe.setVisible( true );
final String text = jEditorPane.getText();
final int index = text.indexOf( "T" );
jEditorPane.setCaretPosition( index + 1 );
while ( true ) {
try {
Thread.sleep( 1000000 );
} catch ( InterruptedException e ) {
e.printStackTrace();
}
}
}
这就是结果:
您应该将indexof
的结果存储在数据库中。
答案 1 :(得分:0)
字符串是否有任何共性?如果他们这样做,您可以尝试使用java.util.scanner或/和java.util.regex.Matcher的组合。确保获得正确的正则表达式以满足您的需求。找到字符串后,获取indexOf的第一个字母,并将插入位置设置为它。