Frage zum JeditorPane

athlord

Grünschnabel
Hallo,

ich benötige mal hilfe :)

also ich habe habe ein jeditorpane objekt, in welches man text eingeben kann.
das standard verhalten ist ja, dass man mit der maus in das jeditorpane klicken kann und dann an der stelle wo sich der caret befindet der neue buchstabe dann eingefuegt wird.

nun bräuchte ich jedoch ein anders verhalten und zwar, dass man zwar an die stelle mit der maus hinklicken kann, aber das KEIN buchstabe automatisch eingefuegt wird. denn es soll dann die position und der gedrückte buchstabe zu einem server geschickt werden, und dieser guckt dann ob an dieser position text eingefuegt werden darf. wenn ja schickt er dem client nen ok oder sonst was.

es gibt ja die option editable beim jeditorpane, aber damit kann der user ja dann gar nix reinschreiben...

also wie kann ich das jeditorpane einstellensodass man zwar den caret setzen kann, jedoch nicht automatisch ein neuer buchstabe an diese position gesetzt wird****

hoffe das ist möglich.

gruß athlord
 
hat keiner eine idee? ist leider wirklich wichtig...

einfach das der text nicht automatisch eingefuegt wird.. mehr will ich nich :( :(
 
Hallo,

ich denke, du musst dafür die insertString-Methode von Document dementsprechend implementieren, dass du hier ne Bedingung einbaust, ob und wann Text eingefügt werden darf.

Hier mal ein kleines Beispiel:

Java:
package de.tutorials;

import javax.swing.text.AttributeSet;
import javax.swing.*;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;


public class JEditorPaneTest extends JFrame {

	public JEditorPaneTest() {
		JEditorPane ep = new JEditorPane();
		final boolean allowedTyping = false;
		ep.setDocument(new PlainDocument() {
			@Override
			public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
				if (allowedTyping) {
					super.insertString(offs, str, a);
				}
			}
		});
		add(ep);
		setSize(300,300);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setVisible(true);
	}

	public static void main(String[] args) {
		new JEditorPaneTest();
	}
}

Gruß

Ben
 
super ben! danke dir 1000 mal!

eine kleinigkeit jedoch noch... wenn ich das so wie oben gemacht ausführe, setzt er leider den caret nicht um eins weiter nach rechts... irgendwie check ich nich wie ich das mache...
die funktion: moveCaretPosition(pos); von JEditorPane seletektiert den text leider um "pos" und bewegt nich den caret um pos...


hoffe du verstehst was ich meine :)
aber nochmal danke!
 
Hallo,

hast du schonmal probiert setCaretPosition() anstatt moveCaretPosition() zu verwenden?

Viele Grüße
Ben
 
hahaha****** ich danke dir ben!
super ****** merci... hätte man zwar selber drauf kommen können... bin ich aber nich :D
hammer!

schönen abend dir noch******
 
Zurück