Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe eine JTextArea und einen Button, welcher die .getSelectedText() Methode der JTextArea aufruft.
Ich moechte nun den markierten Text pruefen, ob er mit "<b>" beginnt und mit "</b>" endet.
Wie geh ich das am besten an?
mit startsWith/endsWith bezieh ich mich ja nur auf den markierten Text...
Du willst den markierten Text auf Prä- und Suffix testen, nimmst aber nicht startsWith() und endsWith(), da sich die nur auf den markierten Text beziehen?
Korrekt.
Wenn ich das Wort "Test" habe, und nur dieses markiere, kann ich doch nicht mit startWith pruefen,
ob es mit "<b>" beginnt, da Test ja nun mal mit "T..." beginnt.
Jetzt verstehe ich, was du willst. Du willst gucken, ob davor und danach dieser Code kommt.
Da könntest du den Ort des markierten Textes suchen und anhand dessen nachprüfen, ob im gesamten Text dieser Code ist.
Eine andere Möglichkeit wäre es, dass du dir anguckst, wie die TextArea herausfindet, welcher Text markiert ist und so die Position des markierten Textes herausfindest und überprüfst, ob der Text vorhanden ist.
hatte die letzten Tage leider wenig Zeit mich dem Problem zu widmne... daher erst jetzt meine Antwort.
Danke auf jeden Fall erstmal!
mit .getSelectionStart() bzw .getSelectionEnd() ermittel ich die position des Anfangs/Endes der markierten Stelle. mit .getSelectionStart()-3 muesste ich dann ja 3 Stellen nach hinten springen.
So weit, so gut.
Hier stellt sich mir nun aber die Frage...wie checke ich, ob ".getSelectionStart() -3" bis ".getSelectionStart()" nun bspw. den String "<b> beinhaltet?
Da setzt es bei mir leider einfach aus...
Ich koennte mir ne for-Schleife schreiben, und diese 3x durchlaufen lassen, wobei die Caret-Position
von .getSelectionStart() - 3 jeweils eins nach "vorn" verschoben wird...aber wie check ich denn den
Textinhalt dort?
Sorry fuer den Doppelpost, aber ich finde keine Option zum editieren des Beitrags...
Ich hatte nun folgende Idee, nur leider fkt. die nicht, und ich check nicht so ganz warum...
Mittlerweile bin ich vom JTextField auf JEditorPane geswitched...
Ich habe folgende Klasse:
Java:
import javax.swing.JEditorPane;
import javax.swing.text.Document;
public class Editor extends JEditorPane {
private Document doc;
public Editor(){
this.doc = this.getDocument();
}
public Document getDoc() {
return doc;
}
public void setDoc(Document doc) {
this.doc = doc;
}
}
Zudem habe ich mir nen Button geschrieben, dem ich Editor uebergebe.
Dort gibts folgende Methode, in der ich auf Text vor und/oder nach selektiertem Text checken moechte:
Java:
public void boldText(Editor ed) {
String bold = "<b>" + ed.getSelectedText() + "</b>";
String boldTag = "<b>";
int pos = this.editor.getCaretPosition();
if (ed.getSelectedText().substring(ed.getSelectionStart()-3, ed.getSelectionStart()) == boldTag) {
// TODO entferne Tags vor und nach selected Text
}
if (ed.getSelectedText() != null) {
this.editor.replaceSelection(bold);
} else {
// this.editor.insert("<b></b>", pos); <- Stammt aus Zeiten, als Editor noch von JTextField erbte und nicht von JEditorPane
}
}
Die if-Bedingung in Zeile 8 der Methode kann so natuerlich nicht funtkionieren, dass ich ja eigentlich mit .equals gegenchecken muesste und nicht mit "==", dessen bin ich mir bewusst.
JEdoch kann ich die equals-Methode nicht aufrufen und ich will mit den "==" nur veranschaulichen, was ich da eigentlich tun moechte.
Die if-Bedingung in Zeile 8 der Methode kann so natuerlich nicht funtkionieren, dass ich ja eigentlich mit .equals gegenchecken muesste und nicht mit "==", dessen bin ich mir bewusst.
JEdoch kann ich die equals-Methode nicht aufrufen und ich will mit den "==" nur veranschaulichen, was ich da eigentlich tun moechte.
Hier kommt ein Fehler ???:L
Wenn ja, welcher ???:L
Versuch' (zur Fehlersuche) ggf. mal den Text zuvor in eine eigene Variable zu schreiben, damit Du besser siehst, was genau draufsteht!
Bzgl. den Text in ne Var packen, kam ich auch schon
Klappt leider trotzdem nicht und ich versteh beim besten Willen nicht warum.
.equals() laesst sich nach wie vor nicht aufrufen. Habs eben nochmal gecheckt.
Die Fehlermeldung reich ich heute Abend nach.
Edit2: Bzw. ne Fehlermeldung als solche kann ich eigentlich nicht nachreichen. Ich wuerd halt gern
die equalsMethode aufrufen, aber das geht - wie gesagt - nicht.
.equals() laesst sich nach wie vor nicht aufrufen. Habs eben nochmal gecheckt.
Edit2: Bzw. ne Fehlermeldung als solche kann ich eigentlich nicht nachreichen. Ich wuerd halt gern
die equalsMethode aufrufen, aber das geht - wie gesagt - nicht
MUSS funktionieren ...
Welche Fehlermeldung kommt denn da ???:L
Oder meinst Du einfach nur, dass die if-Bedingung nicht erfüllt ist ?? .................
Du kannst den markierten String mit getSelecrionStart() - 3 ubd getSelectionEnd() + 3 und substring() in eine Variable tun und dann mit startsWith und endsWith überprüfen, ob dein Code drin ist.