Zum Inhalt springen

Zeichenbegrenzung in JEditorPane


Empfohlene Beiträge

Geschrieben

hab nix gefunden, aber du könntest die tasteneingabe abfangen und immer nachgucken...ist aber wahrscheinlich zu umständlich...

gibt es einen bestimmten grund, warum du bei so wenigen zeichen eine JEditorPane nimmst??? Musst du formatieren?

  • 2 Wochen später...
Geschrieben

danke fuer den link.

leider funktioniert das nicht, d.h. ich kann immernoch zahlen und buchstaben eingeben. :(

gibt es noch eine andere moeglichkeit?

danke

Geschrieben

Also ich würde ja auch auf den KeyListener setzen. Und da kannst du halt wirklich angeben, welche Key´s gedrückt werden dürfen und welche net.

Peet

Geschrieben

hm, wie kann ich denn verhindern, dass ein buchstabe angezeigt wird?

hab den listener implementiert. funtzt auch soweit, nur weiss ich nicht, wie ich die eingabe auf bestimmte tasten begrenzen kann ...

Geschrieben

Na du fragst einfach ab ob die gedrückte Taste eine Zifferntaste war!


public void keyPressed(KeyEvent e) {

	int kCT = e.getKeyCode();

	if(kCT == KeyEvent.VK_0 ||

		kCT == KeyEvent.VK_1 ||

		kCT == KeyEvent.VK_2 ||

		kCT == KeyEvent.VK_3 ||

		kCT == KeyEvent.VK_4 ||

		kCT == KeyEvent.VK_5 ||

		kCT == KeyEvent.VK_6 ||

		kCT == KeyEvent.VK_7 ||

		kCT == KeyEvent.VK_8 ||

		kCT == KeyEvent.VK_9 ||

		kCT == KeyEvent.VK_NUMPAD0  ||

		kCT == KeyEvent.VK_NUMPAD1  ||

		kCT == KeyEvent.VK_NUMPAD2  ||

		kCT == KeyEvent.VK_NUMPAD3  ||

		kCT == KeyEvent.VK_NUMPAD4  ||

		kCT == KeyEvent.VK_NUMPAD5  ||

		kCT == KeyEvent.VK_NUMPAD6  ||

		kCT == KeyEvent.VK_NUMPAD7  ||

		kCT == KeyEvent.VK_NUMPAD8  ||

		kCT == KeyEvent.VK_NUMPAD9) {

			// dann schreib die Zahl in das Feld

		}

Geschrieben

Oh, sorry!!:rolleyes:

Du kannst dir doch vom JEditorPane den schon geschriebenen Text (Zahlen) holen. (getText(); )

So, und nun nimmst du einfach die Tasteneingabe (kCT = e.getKeyCode();) und addest sie einfach dem Text den du aus dem JEditorPane geholt hast. Und danach setzt du einfach den neuen Text ( setText(String t); )!

Also Klartext:


public void keyPressed(KeyEvent e) {

	String strJEditorPaneText = jepIrgendwas.getText();

	int kCT = e.getKeyCode();

	if(kCT == KeyEvent.VK_0 ||

		kCT == KeyEvent.VK_1 ||

		kCT == KeyEvent.VK_2 ||

		kCT == KeyEvent.VK_3 ||

		kCT == KeyEvent.VK_4 ||

		kCT == KeyEvent.VK_5 ||

		kCT == KeyEvent.VK_6 ||

		kCT == KeyEvent.VK_7 ||

		kCT == KeyEvent.VK_8 ||

		kCT == KeyEvent.VK_9 ||

		kCT == KeyEvent.VK_NUMPAD0  ||

		kCT == KeyEvent.VK_NUMPAD1  ||

		kCT == KeyEvent.VK_NUMPAD2  ||

		kCT == KeyEvent.VK_NUMPAD3  ||

		kCT == KeyEvent.VK_NUMPAD4  ||

		kCT == KeyEvent.VK_NUMPAD5  ||

		kCT == KeyEvent.VK_NUMPAD6  ||

		kCT == KeyEvent.VK_NUMPAD7  ||

		kCT == KeyEvent.VK_NUMPAD8  ||

		kCT == KeyEvent.VK_NUMPAD9) {

			strJEditorPaneText+= getKeyText(kCT);

			// Ich weiß, das macht man nicht mit Strings 

	}

}

Geschrieben

also, das ganze schaut momentan bei mir so aus:

public void keyPressed( KeyEvent ke ) {

    if ( ke.getKeyCode() == KeyEvent.VK_0 ||

            ke.getKeyCode() == KeyEvent.VK_1 ||

            ke.getKeyCode() == KeyEvent.VK_2 ||

            ke.getKeyCode() == KeyEvent.VK_3 ||

            ke.getKeyCode() == KeyEvent.VK_4 ||

            ke.getKeyCode() == KeyEvent.VK_5 ||

            ke.getKeyCode() == KeyEvent.VK_6 ||

            ke.getKeyCode() == KeyEvent.VK_7 ||

            ke.getKeyCode() == KeyEvent.VK_8 ||

            ke.getKeyCode() == KeyEvent.VK_9 ||

            ke.getKeyCode() == KeyEvent.VK_NUMPAD0 ||

            ke.getKeyCode() == KeyEvent.VK_NUMPAD1 ||

            ke.getKeyCode() == KeyEvent.VK_NUMPAD2 ||

            ke.getKeyCode() == KeyEvent.VK_NUMPAD3 ||

            ke.getKeyCode() == KeyEvent.VK_NUMPAD4 ||

            ke.getKeyCode() == KeyEvent.VK_NUMPAD5 ||

            ke.getKeyCode() == KeyEvent.VK_NUMPAD6 ||

            ke.getKeyCode() == KeyEvent.VK_NUMPAD7 ||

            ke.getKeyCode() == KeyEvent.VK_NUMPAD8 ||

            ke.getKeyCode() == KeyEvent.VK_NUMPAD9 ||

            ke.getKeyCode() == KeyEvent.VK_BACK_SPACE ||

            ke.getKeyCode() == KeyEvent.VK_DELETE )

    {


    }

  }

das problem ist, dass immernoch alle tasten angezeigt werden, die ich tippe, also auch buchstaben usw. :(

Geschrieben

Das ist klar. Denn jetzt machst du ja momentan noch nix weiter als das du auf ein Event abfragst aber damit nix weiter machst. Schau dir mal mein Posting über deinem an.

Geschrieben

das geht nicht. :beagolisc

public void keyPressed( KeyEvent ke ) {

    int kCT = ke.getKeyCode();

    if ( kCT == KeyEvent.VK_0 ||

            kCT == KeyEvent.VK_1 ||

            kCT == KeyEvent.VK_2 ||

            kCT == KeyEvent.VK_3 ||

            kCT == KeyEvent.VK_4 ||

            kCT == KeyEvent.VK_5 ||

            kCT == KeyEvent.VK_6 ||

            kCT == KeyEvent.VK_7 ||

            kCT == KeyEvent.VK_8 ||

            kCT == KeyEvent.VK_9 ||

            kCT == KeyEvent.VK_NUMPAD0 ||

            kCT == KeyEvent.VK_NUMPAD1 ||

            kCT == KeyEvent.VK_NUMPAD2 ||

            kCT == KeyEvent.VK_NUMPAD3 ||

            kCT == KeyEvent.VK_NUMPAD4 ||

            kCT == KeyEvent.VK_NUMPAD5 ||

            kCT == KeyEvent.VK_NUMPAD6 ||

            kCT == KeyEvent.VK_NUMPAD7 ||

            kCT == KeyEvent.VK_NUMPAD8 ||

            kCT == KeyEvent.VK_NUMPAD9)

    {

      jepDays.setText(KeyEvent.getKeyText(kCT));

    }

  }


  public void keyReleased( KeyEvent ke ) {


  }


  public void keyTyped( KeyEvent ke ) {


  }

wenn ich nun nen buchstaben druecke, wird dieser angezeigt. Bei ner Zahl wird die Zahl zwei mal reingeschrieben ... :(

Geschrieben

UUAAAAAHHHH!!:rolleyes:;)


public void keyPressed( KeyEvent ke ) {

    [B]String strText = jepDays.getText();

    jepDays.setText("");[/B]

    int kCT = ke.getKeyCode();

    if ( kCT == KeyEvent.VK_0 ||

            kCT == KeyEvent.VK_1 ||

            kCT == KeyEvent.VK_2 ||

            kCT == KeyEvent.VK_3 ||

            kCT == KeyEvent.VK_4 ||

            kCT == KeyEvent.VK_5 ||

            kCT == KeyEvent.VK_6 ||

            kCT == KeyEvent.VK_7 ||

            kCT == KeyEvent.VK_8 ||

            kCT == KeyEvent.VK_9 ||

            kCT == KeyEvent.VK_NUMPAD0 ||

            kCT == KeyEvent.VK_NUMPAD1 ||

            kCT == KeyEvent.VK_NUMPAD2 ||

            kCT == KeyEvent.VK_NUMPAD3 ||

            kCT == KeyEvent.VK_NUMPAD4 ||

            kCT == KeyEvent.VK_NUMPAD5 ||

            kCT == KeyEvent.VK_NUMPAD6 ||

            kCT == KeyEvent.VK_NUMPAD7 ||

            kCT == KeyEvent.VK_NUMPAD8 ||

            kCT == KeyEvent.VK_NUMPAD9)

    {

      jepDays.setText([B]strText + [/B]KeyEvent.getKeyText(kCT));

    }

    [B]else jepDays.setText(strText);[/B]

  }


Peet

Geschrieben

Hi,

eigene JEditorPane schreiben und von JEditorPane ableiten.

Methode setText überschreiben und dort prüfen.

Oder einen DocumentListener auf das Document der JEditorPane setzen und bei den jeweils gefeuerten Events notfalls die Änderungen rückgängig machen.

Man kann Zeichen nicht nur über Tasten einfügen. ;)

Gruß Jaraz

Geschrieben
Original geschrieben von Jaraz

eigene JEditorPane schreiben und von JEditorPane ableiten.

Methode setText überschreiben und dort prüfen.

Sorry, das wird wenn du nicht selber den Text setzt, sondern über Maus oder Tastatur, natürlich nicht funktionieren.

Original geschrieben von Jaraz

Oder einen DocumentListener auf das Document der JEditorPane setzen und bei den jeweils gefeuerten Events notfalls die Änderungen rückgängig machen.

Das sollte aber klappen.

Gruß Jaraz

Geschrieben

Hmm, das wäre meine nächste Idee gewesen. Schien mir (da ich generell faul bin) nicht sinnvoll. Aber du hast mich ja jetzt bekehrt (kopieren-einfügen)!:rolleyes:

Peet

Geschrieben

das mit dem KeyListener funktioniert jedenfalls nicht. :(

wie mach ich das genau mit dem DocumentListener? Hab die update methoden eingebaut, weiss aber nicht, was ich damit anfangen soll ...

danke

Geschrieben

hab das prob geloest.

da ich eh nur einstellige zahlen brauche hab ich ne JComboBox verwendet... keine KeyListener, DocumentListener oder sonst irgendwelchen schnickschnack .. ;)

so long && danke. :)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...