每次textarea文本被包裹时递增计数器

时间:2015-11-16 05:33:04

标签: java netbeans javafx scenebuilder

每次文本被包装时我都需要能够计算一行。我正在使用javaFX“TextArea”控件。

我已经实现了一个计数器,每次遇到“\ n”字符时它都会递增。不幸的是,这忽略了由于文本换行而创建的其他行。

IS 是一种使用jtextarea swing控件来避免这种情况的方法,它类似于javafx的文本区域,但我真的不想使用它,因为FX版本具有其他功能哪个更适合我的任务。

如果有人对如何增加此计数器有任何建议,请告诉我!或者,另一种计算线的方法也同样有效。

(我正在使用场景构建器2.0和Netbeans 8.1 / 8.0.2(两者))

我必须手动输入换行符,如下所示:

String pText = Primary.getText();
        Primary.clear();

                     StringReader reader = new StringReader(pText);
            BufferedReader br = new BufferedReader(reader); 
            //FileReader reader = new FileReader(fileLocation);
            //BufferedReader br = new BufferedReader(reader); 
            String s;
            int index = 0;
            //int charCounter = 0;

            boolean endOfPara = false;


//                                        int index = 0;
//                                                    boolean endOfPara = false;
      try{                                           
            //loads the text and formats it if necessary                                        
            while((s = br.readLine()) != null)
            {
                index = 0;

                //loading block
                if(s.length() <= characterCapacity)
                {
                    //String s = "abcdefg";
                    int result = s.indexOf('\n');

                    if(result == -1)
                    {
                        Primary.appendText(s + "\n");
                    }
                    else
                    {
                        Primary.appendText(s);
                    }
                }
                //formatting block
                else
                {
                    while(index < s.length()) //change this
                    {

                            if((index == characterCapacity) && (index < s.length() - 1))
                            {
                                while(s.charAt(index) != ' ')
                                {
                                    index--;
                                }   

                                String n = s.substring(0, index);
                                s = s.substring(index);

                                //if(n.charAt(n.length() - 1) == '\n')
                                //{
                                //    Primary.appendText(n);
                                //}
                                //else
                                //{
                                    Primary.appendText(n + "\n");
                                //}

                                index = 0;
                            }
                            else if((index == s.length() - 1) && (index <= characterCapacity) && (s.length() > 0))
                            {
                                Primary.appendText(s + "\n");
                                index = s.length();  //OR use break;
                                endOfPara = true;

                                Primary.forward();
                                Primary.deletePreviousChar();
                            }
                            else
                            {
                                index++;
                            }

                            /*if(charCounter > 90)
                            {
                                if((charCounter >= 90) && (s.charAt(index) != )
                                {

                                }

                                if(index == (s.length() - 1))
                                {

                                }
                                else
                                {
                                    charCounter++;
                                }
                            }*/
                    }

                    /*if(endOfPara == true)
                {
                    if(s.charAt(index - 2) != '\n')
                    {
                        Primary.appendText("\n");
                    }
                }

                endOfPara = false;*/

                }




            }
    }
    catch(Exception e)
    {}

我有一个以前的版本更好地工作,但不幸的是,它会在单词的中间插入换行符,在某些情况下。

所以是的,简而言之,这就是为什么我想使用第三方库来“获取行号”/“获取总行数”,或者找到一些方法来使用textarea皮肤。

请帮忙!我真的被困在这......

0 个答案:

没有答案
相关问题