Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从一大块字符串中获取一行字符串?_Java_String_Swing_Jtextpane_Indexof - Fatal编程技术网

Java 如何从一大块字符串中获取一行字符串?

Java 如何从一大块字符串中获取一行字符串?,java,string,swing,jtextpane,indexof,Java,String,Swing,Jtextpane,Indexof,我想做的是得到一段大字符串。我尝试过使用indexOf(),但对于重复的文本,这完全失败了。我的最终目标是让用户能够在JTextPane中选择文本,并仅对该部分文本进行样式化。我已经将样式设置用于StyledDocuments,甚至可以只设置用户选择的文本样式,但这是我的问题 这么说吧 String alltext=“敏捷的棕色狐狸跳过了懒狗” 用户突出显示的是String selectedtext 在这种情况下,让我们说 字符串selectedtext=“brown” 我的目标是获得所选文本的

我想做的是得到一段大字符串。我尝试过使用indexOf(),但对于重复的文本,这完全失败了。我的最终目标是让用户能够在JTextPane中选择文本,并仅对该部分文本进行样式化。我已经将样式设置用于StyledDocuments,甚至可以只设置用户选择的文本样式,但这是我的问题

这么说吧

String alltext=“敏捷的棕色狐狸跳过了懒狗”

用户突出显示的是
String selectedtext

在这种情况下,让我们说

字符串selectedtext=“brown”

我的目标是获得所选文本的偏移量和长度。对于这句话,我可以简单地做:

int offset = alltext.indexOf(selectedtext);
int length = selectedtext.length();
这很好用。但如果:

alltext=brownbrownbrownbrownbrown

用户突出显示第三个棕色。如果我像以前一样做同样的事情,程序只会选择第一个棕色而不是真正的棕色,它会设计第一个

除了从一个大的块中获取一段字符串的位置外,还有其他方法可以解决这个问题吗


谢谢

不确定我是否正确理解了你的问题。如果您想检测用户何时选择了文本,然后对该文本进行样式化:

为了让某人选择文本,他们必须单击文本区域,拖动并释放单击。因此,附加一个MouseListener并实现MouseRelease方法来检查是否选择了任何文本,如果选择了,则将其保存为字符串:

public void mouseReleased(MouseEvent e) {
    if (textArea.getSelectedText != null){ //see if they selected something 
        String s = textArea.getSelectedText();
        //stylize s
        }
编辑:如果你要使用一个按钮,那就更容易了。将ActionListener添加到按钮并

     public void ActionPerformed(ActionEvent e) {
    if (textArea.getSelectedText() != null){ //see if they selected something 
        Font f = showStyleOptionsMenu();
        textArea.getSelectedText().setFont(f);
        }

showstyleoptions菜单()
显示一个新面板(或对话框或任何内容),允许用户选择字体样式,然后将所选字体返回给侦听器,侦听器将其应用于所选文本。

不确定我是否正确理解了您的问题。如果您想检测用户何时选择了文本,然后对该文本进行样式化:

为了让某人选择文本,他们必须单击文本区域,拖动并释放单击。因此,附加一个MouseListener并实现MouseRelease方法来检查是否选择了任何文本,如果选择了,则将其保存为字符串:

public void mouseReleased(MouseEvent e) {
    if (textArea.getSelectedText != null){ //see if they selected something 
        String s = textArea.getSelectedText();
        //stylize s
        }
编辑:如果你要使用一个按钮,那就更容易了。将ActionListener添加到按钮并

     public void ActionPerformed(ActionEvent e) {
    if (textArea.getSelectedText() != null){ //see if they selected something 
        Font f = showStyleOptionsMenu();
        textArea.getSelectedText().setFont(f);
        }

showstyleoptions菜单()
显示一个新面板(或对话框或任何内容),允许用户选择字体样式,然后将所选字体返回给侦听器,侦听器将其应用于所选文本。

这是一个UI问题,而不是java.lang.String问题

如果你发布你的用户界面代码,我们可能会回答得很好


使用Swing,TextComponent和参考底图模型可能会有所帮助,为您提供当前选择的文本和索引。

这是一个UI问题,而不是java.lang.String问题

如果你发布你的用户界面代码,我们可能会回答得很好


使用Swing时,TextComponent和参考底图模型可能会有所帮助,为您提供当前选择的索引和索引。

我认为相关的两个答案(在Careers 2.0图标下)中有几个问题,为什么您要将选择作为字符串跟踪,而不是像通常那样直接作为索引/偏移跟踪?JTextPane应该自动执行此操作。或者,换一种说法:如果出于某种原因,您只能确定用户要查找的字符串,则无法知道它是哪一个。您如何从JTextPane中准确获取索引值?有没有一种方法可以帮你做到这一点?我猜,谢谢,getSelectionStart()似乎起到了作用。有几个问题我认为相关的两个答案(在“职业2.0”图标下)中有两个答案,为什么你要将选择作为字符串跟踪,而不是像通常那样直接作为索引/偏移跟踪?JTextPane应该自动执行此操作。或者,换一种说法:如果出于某种原因,您只能确定用户要查找的字符串,则无法知道它是哪一个。您如何从JTextPane中准确获取索引值?有没有一种方法可以为您做到这一点?我猜,谢谢,getSelectionStart()似乎可以做到这一点。请使用modelToView/viewToModel(Document/AbstractDocument)@mKorbel我不知道你在说什么,或者你可以使用鼠标事件来代替黑客攻击。当用户应该在单独的类中按JButton来确定样式时,我可以在mousererelease方法中设置s的样式吗?@millimoose同意不带html的JTextArea,特殊字符和空白字符,例如…请建模查看/查看建模(文档/摘要文档)@mKorbel我不知道你在说什么,或者你可以使用鼠标事件来代替黑客攻击。当用户应该在单独的类中按JButton来确定样式时,我可以在mousererelease方法中设置s的样式吗?@millimoose同意JTextArea,没有html、特殊字符和空格字符,例如。。。