Wie schwer kann es eigentlich sein.

Status
Nicht offen für weitere Antworten.

michi2

Bekanntes Mitglied
die Methoden getLineStartOffset, getLineEndOffset und getLineOfOffset der Klasse JTextArea nachzubauen?! :x :cry:
Ich versuch das jetzt schon seit mind. 4 Tagen, und es funzt immer noch nicht ganz!!!
Warum hat Sun die eigentlich nicht auch in die String-Klasse geschrieben?

Mein Code:
Code:
private int getLineStartOffset(String text, int line) throws javax.swing.text.BadLocationException
      {
      if(text == null)
         throw new IllegalArgumentException ("Arrgument 'null' is not allowed in getLineOfOffset(String text, int off)");
      int offset = 0;
      for(int l=1; l<line; l++)
         {
         int o1 = text.indexOf("\r", offset);
         int o2 = text.indexOf("\n", offset);
         if(o1 == -1 && o2 == -1)
            {
            throw new javax.swing.text.BadLocationException("String dosn't contain so many lines: ", line);
            }
         if(o1+1==o2)
            offset = o2+1;
         else if(o1 == -1)
            offset = o2+1;
         else if(o2 == -1)
            offset = o1+1;
         else
         offset = Math.min(o1+1, o2)+1;
         }
      return offset;
      }
   
   private int getLineEndOffset(String text, int line) throws javax.swing.text.BadLocationException
      {
      if(text == null)
         throw new IllegalArgumentException ("Arrgument 'null' is not allowed in getLineOfOffset(String text, int off)");
      int position = 0;
      int offset = 0;
      for(int l=1; l<=line; l++)
         {
         int o1 = text.indexOf("\r", position);
         int o2 = text.indexOf("\n", position);
         
         if(o1 == -1 && o2 == -1)
            {
        	if(l==line)
        	   {
        	   offset = text.length();
        	   break;
        	   }
        	else
               throw new javax.swing.text.BadLocationException("String dosn't contain so many lines: ", line);
            }
         position = Math.max(o1, o2) +1;
         
         if(o1==o2-1)
            offset = o1-1;
         else if(o1 == -1)
            offset = o2-1;
         else if(o2 == -1)
            offset = o1-1;
         else
         offset = Math.min(o1, o2)-1;
         }
      return offset;
      }
   
   
   private int getLineOfOffset(String text, int off) throws javax.swing.text.BadLocationException
      {
      if(text == null)
         throw new IllegalArgumentException ("Arrgument 'null' is not allowed in getLineOfOffset(String text, int off)");
      if(text.length()<off)
         throw new javax.swing.text.BadLocationException("String dosn't contain so many offsets: " , off);
      if(off<0)
         throw new javax.swing.text.BadLocationException("Offsets must be greater then zero: " , off);
      int line = 0;
      for(int o = 0; o<off;)
         {
         int o1 = text.indexOf("\r", o+1);
         int o2 = text.indexOf("\n", o+1);
         if(o1 == -1 && o2 == -1)
            {
            line++;
            break;
            }
         if(off==o1)
            {
            line++;
            break;
            }
         else if(off==o2)
            {
            line += 2;
            break;
            }
         if(o1==o2-1)
            o = o2;
         else if(o1 == -1)
            o = o2;
         else if(o2 == -1)
            o = o1;
         else
         o = Math.min(o1, o2);
         line++;
         }
      return line;
      }

Ich hab leider im Mom keine Ahnung wo genau der/die Fehler jetzt liegen!
Ich waeis nur das im Moment:
Code:
    	 zeilen = getLineOfOffset(text, to ) - getLineOfOffset(text, from ) + 1;
         i= zeile;
            System.out.println("s: " + getLineStartOffset(text, i));
            System.out.println("e: " + getLineEndOffset(text, i));
Eine BadLocationException in der letzten Zeile auslöst.

Währe sehr dankbar wenn ihr mir helfen könntet! Langsam geht mit das Problem auf den ***! *Verzweifel*

Michi
 
G

Gast

Gast
is mir jetzt zulang das alles anzugucken, aber sieh dir doch den sourcecode von sun an
 

michi2

Bekanntes Mitglied
Ich befürchte, dass mir das von sun nicht's hilft, der Grund ist der Post von AlArenal:

Code:
  public int getLineStartOffset(int line)
     throws BadLocationException
  {
    int lineCount = getLineCount();
    
    if (line < 0 || line > lineCount)
      throw new BadLocationException("Non-existing line number", line);

    Element lineElem = getDocument().getDefaultRootElement().getElement(line);
    return lineElem.getStartOffset();
  }

[Edit:] noch ein Problem: in meinem KKB taucht der Fehler nicht auf...
 

michi2

Bekanntes Mitglied
???:L
Hm merkwürdig, auf irgend einem Grund scheint jetzt alles zu gehen.
Ich trauch der Ruche Zwar nicht ganz (dachte schon 4x das es jetzt geht...), hab den Threat aber abgehakt, und den Code durch das schreiben der Methode getLinesCount() vereinfacht:

Code:
   private int getLineCount(String text)
      {
      if(text == null)
         throw new IllegalArgumentException ("Arrgument 'null' is not allowed in getLineOfOffset(String text, int off)");
      
      int numerOfR = 0;
      for(int i = 0; true; )
         {
         i = text.indexOf("\r", i)+1;
         if(i==0)
            break;
         numerOfR++;
         }
      
      int numerOfN = 0;
      for(int i = 0; true; )
         {
         i = text.indexOf("\n", i)+1;
         if(i==0)
            break;
         numerOfN++;
         }
      return Math.max(numerOfR, numerOfN) +1;
      }//Ende 'getLineCount'

Entschuldigung und vielen Dank!

Michi
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Schwer änderbare Clientinformation? Allgemeine Java-Themen 2
Thallius Ist Background-Threading in Java wirklich so schwer? Allgemeine Java-Themen 7
D Verschlüsselungsprogramm nur schwer kontrollierbar bzw. buggy auf manchen Systemen Allgemeine Java-Themen 9
G warum ist es so s****ß schwer ein jar zu erstllen? Allgemeine Java-Themen 11
E schwer zu beschreibendes problem (siehe code) Allgemeine Java-Themen 4
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
W Haben Konstruktoren in Java eigentlich immer mindestens einen Parameter? Allgemeine Java-Themen 4
S Gibt es eigentlich Java Source Code Interpreter..? Allgemeine Java-Themen 13
M Warum eigentlich JAVA? Allgemeine Java-Themen 18
D Zufallsgererator der eigentlich keiner ist Allgemeine Java-Themen 24
M Was produzieren die ganzen Java-Programmierer eigentlich so? Allgemeine Java-Themen 23
H wie viel speicher braucht eigentlich ein array? Allgemeine Java-Themen 2
M Gibt es eigentlich einen Standalone-Java-ICQ-clone Allgemeine Java-Themen 19
A Was ist eigentlich ein Thread? Allgemeine Java-Themen 3
S Was sind eigentlich Java Beans? Allgemeine Java-Themen 2
E Angabe wie groß Array sein soll und in for-schleifen diesen Array füllen Allgemeine Java-Themen 3
S Validation Null aber nicht Blank und muss Email sein Allgemeine Java-Themen 22
pkm Kann eine ServerSocket-Klasse nicht stateful sein? Allgemeine Java-Themen 4
P Programm darf nicht mehrfach startbar sein Allgemeine Java-Themen 16
W Warum muss void main() public sein? Allgemeine Java-Themen 3
FrittenFritze Batik und sein "ProtocolHandler" für xlink:href Allgemeine Java-Themen 1
R Input/Output java.io.EOFException, obwohl sie abgefangen sein sollte? Allgemeine Java-Themen 3
L Wie genau soll ein Klassendiagramm sein Allgemeine Java-Themen 4
L kann in einem array der 1. index größer als der 2. sein? Allgemeine Java-Themen 10
A java logging api scheint nicht thread save zu sein Allgemeine Java-Themen 22
R Syntax Error, der keiner sein sollte Allgemeine Java-Themen 12
G RandomAccesFile ? Wie kann das sein? Allgemeine Java-Themen 12
J Interpreteraufruf bring Error obwohl dies nicht sein dürfte. Allgemeine Java-Themen 24
C JAVA Anwendung - Was muss auf dem Server installiert sein? Allgemeine Java-Themen 6
C Thread zu langsam ==> kann doch nicht sein oder? Allgemeine Java-Themen 9
T Klasse soll Object sein->um in JTabbedPane einzufügen Allgemeine Java-Themen 2
D NullPointerException wo keine sein sollte. Allgemeine Java-Themen 2
S Also Soooooooooo toll scheint das ja nicht zu sein Allgemeine Java-Themen 17

Ähnliche Java Themen

Neue Themen


Oben