[Java] CaretListener

Pagina: 1
Acties:

  • D-RiSe
  • Registratie: September 2000
  • Laatst online: 19-03 19:37

D-RiSe

Kick the baby

Topicstarter
Ik wil eigenlijk met behulp van een CaretListener uitzoeken waar die caret is.. dus regel:pos bijv

het probleem is dat ik niet de positie op de regel krijg maar de positie in het textArea... dus als je 10 letters typt in 3 regels krijg je aan het einde van het document gewoon 10 als positie

intel silver reef, celly 2.0 Ghz, 256mb ddr, G2MX


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Blader eens wat rond in de api.... wellicht dat getMark() hiervoor bedoeld is en anders kan je via de source van een event ook nog bij het component komen en via die weg de regel vinden.... Kijk ook eens bij getCaret() :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op zaterdag 02 februari 2002 22:15 schreef D-RiSe het volgende:
Ik wil eigenlijk met behulp van een CaretListener uitzoeken waar die caret is.. dus regel:pos bijv

het probleem is dat ik niet de positie op de regel krijg maar de positie in het textArea... dus als je 10 letters typt in 3 regels krijg je aan het einde van het document gewoon 10 als positie
Iedere regel die heeft een element. Je moet van de document de root element ophalen en dan terug zien te vinden in welke element je zit (dan heb je dus je regel). En je column is dan de offset. Vb:

http://forum.java.sun.com/thread.jsp?forum=57&thread=144430

Maar dat hele swing text gebeuren is vrij irritant. Ik gebruikt het zelf ook niet meer, maar ik gebruik het grafische component van JEdit. Er is hier ook een niet met het systeem geintegreerde versie van en het werkt heel erg fijn.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Alarmnummer: Maar dat hele swing text gebeuren is vrij irritant.
Daar kan ik mijn volledig bij aansluiten :( .

Het is zo generiek opgezet dat de eenvoudigste text-componenten (JTextField, JTextArea) in feite dezelfde modellen hebben als de hele complexe componenten ( JEditorPane, JTextPane ).

Het ironische is echter dat vrijwel niemand deze complexere componenten gebruikt omdat die juist ook weer zuigen. Wellicht komt dat door exact hetzelfde: ze moeten op hetzelfde generieke model werken :( .

Dat vind ik dus echt een waardeloze opzet. Ik heb zelf de gewoonte op een zeer model gebaseerd manier te werken en maak daarom ook altijd gebruik van alle Swing modellen. Als je echter gewoon een JTextField wilt hebben met een simpel String model hieronder wordt dit je echt volledig onmogelijk gemaakt :( . Daarom ben ik zelf maar aan het knutselen gegaan met een model-opzet voor onder deze eenvoudige text-componenten.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op zondag 03 februari 2002 10:09 schreef mbravenboer het volgende:

[..]
Terecht commentaar..
Heb je al gekeken naar het textcomponentje van JEdit? Ze hebben ook ergens een sourcesforge project waar ze een los element hebben. Die gebruik ik ook voor het systeem en werkt echt handig.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Alarmnummer: Heb je al gekeken naar het textcomponentje van JEdit?
Hebben ze dan ook gewoon simpele tekstfields en textarea zonder syntax-kleuring zelf geimplementeerd (en passend in Swing)?

Het gaat mijn namelijk absoluut niet om kleuren of style goodies :) . Ik moet gewoon simpele text-fields en text-area's hebben.

In principe voldoet mijn oplossing nu wel omdat ik een adapter heb geschreven van mijn eigen modellen van het Swing Document, maar betere dingen zijn natuurlijk altijd leuk :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op zondag 03 februari 2002 10:17 schreef mbravenboer het volgende:

[..]

Hebben ze dan ook gewoon simpele tekstfields en textarea zonder syntax-kleuring zelf geimplementeerd (en passend in Swing)?

Het gaat mijn namelijk absoluut niet om kleuren of style goodies :) . Ik moet gewoon simpele text-fields en text-area's hebben.

In principe voldoet mijn oplossing nu wel omdat ik een adapter heb geschreven van mijn eigen modellen van het Swing Document, maar betere dingen zijn natuurlijk altijd leuk :) .
Als jij er geen kleuring in wilt hebben zet plainTextTokenMarker erin :) En heb je nergens last van. Maar het is wel leuk om alle klinker rood te maken en de medeklinkers blauw. De cijfers groen.. :) En styles zijn in dit componentje niet mogelijk, alleen kleuring.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ze hebben alleen een TextArea, en geen textfield.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Alarmnummer: Als jij er geen kleuring in wilt hebben zet plainTextTokenMarker erin :) En heb je nergens last van.

Ze hebben alleen een TextArea, en geen textfield
Hum... ik denk toch dat ik dan maar bij m'n Swing componentjes blijf... Ik gebruik toch vrijwel alleen maar JTextFields en ben wel tevreden over mijn huidige opzet:

Eenvoud is nog niet zo gek:
code:
1
2
3
4
5
public interface TextModel extends Model
{
    public String getValue();
    public void setValue(String value);
}

(maar dan ondergronds eigenlijk met Java Generics).
Model extends Changeable en wat dat doet kan je vast zelf wel raden :+ .
Maar het is wel leuk om alle klinker rood te maken en de medeklinkers blauw. De cijfers groen.. :)
Dat zullen m'n gebruikers inderdaad zeer functioneel vinden ja 8-) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • D-RiSe
  • Registratie: September 2000
  • Laatst online: 19-03 19:37

D-RiSe

Kick the baby

Topicstarter
coder.getCef() retourneert een JEditTextArea,
met de volgende code krijg je wel de juiste positie op een regel voor zove rik kan zien
code:
1
2
(coder.getCef().getCaretPosition()
 - coder.getCef().getLineStartOffset(coder.getCef().getCaretLine()))

bedankt voor de reacties

intel silver reef, celly 2.0 Ghz, 256mb ddr, G2MX

Pagina: 1