shad0w Geschrieben 6. Juni 2003 Geschrieben 6. Juni 2003 Hi, ich moechte gerne in einer JEditorPane die Anzahl der Zeichen auf 1 und die Zeichen auf Zahlen (0-9) beschraenken. wie geht das? danke. Zitieren
Felicie Geschrieben 6. Juni 2003 Geschrieben 6. Juni 2003 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? Zitieren
shad0w Geschrieben 7. Juni 2003 Autor Geschrieben 7. Juni 2003 Hi, nein, gibt eigentlich keinen Grund. Was ist denn besser? Die zeichen und anzahlbegrenzung muss aber auf jeden fall mit rein ... Zitieren
Peregrin Geschrieben 16. Juni 2003 Geschrieben 16. Juni 2003 hi, wenns auch ein textfield sein darf, hilft evtl das hier. mit dem format "0" sollte deine eingabe abgefangen werden können. hth... Zitieren
shad0w Geschrieben 17. Juni 2003 Autor Geschrieben 17. Juni 2003 danke fuer den link. leider funktioniert das nicht, d.h. ich kann immernoch zahlen und buchstaben eingeben. gibt es noch eine andere moeglichkeit? danke Zitieren
Peeter Geschrieben 17. Juni 2003 Geschrieben 17. Juni 2003 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 Zitieren
shad0w Geschrieben 17. Juni 2003 Autor Geschrieben 17. Juni 2003 das koennt ich auch machen, stimmt. welche art von eingabefeld sollte ich da bestenfalls verwenden? Zitieren
shad0w Geschrieben 17. Juni 2003 Autor Geschrieben 17. Juni 2003 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 ... Zitieren
Peeter Geschrieben 17. Juni 2003 Geschrieben 17. Juni 2003 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 } Zitieren
shad0w Geschrieben 17. Juni 2003 Autor Geschrieben 17. Juni 2003 so weit war ich schon ... // dann schreib die Zahl in das Feld da ist das problem ... Zitieren
Peeter Geschrieben 17. Juni 2003 Geschrieben 17. Juni 2003 Oh, sorry!! 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 } } Zitieren
shad0w Geschrieben 17. Juni 2003 Autor Geschrieben 17. Juni 2003 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. Zitieren
Peeter Geschrieben 17. Juni 2003 Geschrieben 17. Juni 2003 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. Zitieren
shad0w Geschrieben 17. Juni 2003 Autor Geschrieben 17. Juni 2003 ahso, getKeyText() ... danke Zitieren
Peeter Geschrieben 17. Juni 2003 Geschrieben 17. Juni 2003 Ja genau. Hab ich das nicht geschrieben?:mod: Schön, wenn ich dir helfen konnte. Zitieren
shad0w Geschrieben 17. Juni 2003 Autor Geschrieben 17. Juni 2003 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 ... Zitieren
Peeter Geschrieben 17. Juni 2003 Geschrieben 17. Juni 2003 UUAAAAAHHHH!! 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 Zitieren
Jaraz Geschrieben 17. Juni 2003 Geschrieben 17. Juni 2003 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 Zitieren
Jaraz Geschrieben 17. Juni 2003 Geschrieben 17. Juni 2003 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 Zitieren
Peeter Geschrieben 17. Juni 2003 Geschrieben 17. Juni 2003 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)! Peet Zitieren
shad0w Geschrieben 18. Juni 2003 Autor Geschrieben 18. Juni 2003 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 Zitieren
shad0w Geschrieben 18. Juni 2003 Autor Geschrieben 18. Juni 2003 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. Zitieren
Jaraz Geschrieben 18. Juni 2003 Geschrieben 18. Juni 2003 Hi, es gibt auch noch den JSpinner, nur so als Anregung. http://java.sun.com/j2se/1.4.1/docs/guide/swing/1.4/spinner.html Allerdings erst seit dem jdk 1.4. Gruß Jaraz Zitieren
shad0w Geschrieben 18. Juni 2003 Autor Geschrieben 18. Juni 2003 damit hab ich auch schon gearbeitet ... war mir aber auch zu viel aufwand ... wollte das projekt endlich zur seite legen ... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.