KeyEvent Leerzeichen und Backspace funktioren nicht! HILFE!

Status
Nicht offen für weitere Antworten.
H

harry

Gast
Hallo!

ich habe eine Klasse, die von JTextArea abgeleitet ist.
Code:
class MyJTextArea extends JTextArea {   
   public MyJTextArea() {
   }   
   
   public void processKeyEvent(KeyEvent e) {

       if ((e.getKeyCode() == KeyEvent.VK_SPACE) ||
                      (e.getKeyCode() == KeyEvent.VK_BACK_SPACE))  {
          super.processKeyEvent(e);
          System.out.println("Backspace oder Leertaste");
           }
       
   }   
}


Einrückung ist etwas blöd, aber ich mußte das Beispiel etwas anpassen.

Also das Problem ist:
Wenn ich Leertaste oder Backspace drücke erkennt er das auch anhand des Kexcodes und gibt auf den String "Backspace oder Leertaste" aber er GIBT es eben nicht mit seiner super-MEthode weiter.
Bei e.getKeyCode()== KeyEvent.VK_SHIFT geht das ohne Probleme!


Wenn ich den KeyListener nutze , oder direkt super.processKeyEvent(e); aufrufe kann ich nicht nicht mehr bestimmen, wann das Zeichen ausgegeben werden soll und wann nicht. Ich will nämlich nur gewisse Zeichen und eben Leertaste und BAckspace zulassen.

Die Alternative wäre dann nur einen Keylistener zu nutzen und dann eben auf die TextArea draufzugreifen und daraus dann zeichen löschen, die weg sollen. Aber ist nicht elegant.



Ich weiß nicht mehr weiter!
Bitte helft mir!

Vielen Dank im Voraus!

Gruß
 

André Uhres

Top Contributor
Code:
/*
 * TextCheck.java
 */
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
public class TextCheck extends JFrame {
    public TextCheck() {
        super("Nur kleine Buchstaben ohne Umlaut");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(400,300);
        setLocationRelativeTo(null);
        textArea = new JTextArea();
        textArea.setDocument(new MyTextDocument());
        getContentPane().add(textArea, BorderLayout.CENTER);
    }
    public static void main(final String args[]){new TextCheck().setVisible(true);}
    private JTextArea textArea;
}
class MyTextDocument extends DefaultStyledDocument {
    public void insertString(final int offs, final String str, final AttributeSet a)
    throws BadLocationException {
        char[] strA = str.toCharArray();
        for (int i = strA.length-1; i > -1; i--) {
            if ( valid.indexOf(strA[i]) > -1)
                super.insertString(offs, ""+strA[i], a);
            else
                Toolkit.getDefaultToolkit().beep();
        }
    }
    private final String valid = "abcdefghijklmnopqrstuvwyxz"
            +" \t\n";     //space, tab, newline 
}
 
H

harry

Gast
vielen Dank, Andre!

Auf die Idee bin ich noch nicht gekommen, nur Zeichen einzutragen und den Rest zulassen.

Die letzten Lösungsmöglichkeiten waren nur noch selbst zu programmieren. Hatte auch funktioniert, aber außer den zulgeassenen Operationen ist da ja nichts möglich (kein Strg+C , Strg+V usw.)

Dein Code ist da eleganter!

Hier das zu Fuß programmierte ....
Code:
//Backspace
		                        boolean downLeerTaste = true;
		                        boolean downBackSpace = true;
                                        .....
					if (e.getKeyCode() == KeyEvent.VK_BACK_SPACE) {
		 				//jedes zweite Event abfangen und nur asuführen, wenn position>0 ist, sonst Fehler
		 				//also Position des Cursors
		 				if (!downBackSpace && (getCaretPosition()>0)) {	 					
		 		 			    replaceRange("",getCaretPosition()-1,getCaretPosition());
		 		 		}
		 				downBackSpace = !downBackSpace;	 				
					}
//  Leerzeichen
 			                if (e.getKeyCode() == KeyEvent.VK_SPACE && leerZeichenerlaubt) {
						    if (!downLeerTaste) {
								insert(" ",getCaretPosition());
						    }
						    downLeerTaste = !downLeerTaste;							
						}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M KeyEvent ohne Fokus konsumieren AWT, Swing, JavaFX & SWT 1
Monokuma KeyEvent in der Canvas Klasse AWT, Swing, JavaFX & SWT 0
F AWT awt KeyEvent - Zeichen direkt nach Eingabe löschen AWT, Swing, JavaFX & SWT 2
Bluedaishi JavaFX JFoenix TextField KeyEvent AWT, Swing, JavaFX & SWT 2
L JavaFX ASCII Zeichen /char von KeyEvent erhalten AWT, Swing, JavaFX & SWT 5
Wurstkopp JavaFX JavaFX KeyEvent kein Zahlencode um unbekannte Mediatasten auszuwerten? AWT, Swing, JavaFX & SWT 0
B JavaFX Wo liegt mein Gedankenfehler ??? KeyEvent geht nicht ... AWT, Swing, JavaFX & SWT 8
S Swing JDialog mit KeyEvent als Rückgabe AWT, Swing, JavaFX & SWT 1
B JavaFX KeyEvent und Canvas draw Problem AWT, Swing, JavaFX & SWT 9
dat_vin KeyEvent jTextField AWT, Swing, JavaFX & SWT 12
A Swing KeyEvent mit KeyListener und KeyAdapter kürzer schreiben AWT, Swing, JavaFX & SWT 7
B Event Handling KeyEvent für "+"-Tase auf dem Numpad? AWT, Swing, JavaFX & SWT 2
R Integer to KeyEvent AWT, Swing, JavaFX & SWT 2
sylo STRG + TAB KeyEvent abfangen AWT, Swing, JavaFX & SWT 6
earlgrey_tea KeyEvent reagiert nicht auf Eingabe ("Pausentaste") AWT, Swing, JavaFX & SWT 11
Luk10 KeyEvent ... AWT, Swing, JavaFX & SWT 6
M KeyEvent, KEY_TYPED & backspace/left/right. AWT, Swing, JavaFX & SWT 3
H KeyEvent für JFrame AWT, Swing, JavaFX & SWT 3
S Spezielles KeyEvent AWT, Swing, JavaFX & SWT 6
Luma AWTEventListener KeyEvent und KEY_TYPED AWT, Swing, JavaFX & SWT 5
P KeyEvent methode an actionEvent methode weiterleiten AWT, Swing, JavaFX & SWT 5
A KeyEvent bei TAB-Druck AWT, Swing, JavaFX & SWT 10
J KeyEvent bei JTable mehrmals hintereinander ausführen AWT, Swing, JavaFX & SWT 9
J KeyEvent STRG+l, CTRL_DOWN_MASK AWT, Swing, JavaFX & SWT 7
I Pfeiltasten für KeyEvent AWT, Swing, JavaFX & SWT 4
G Windows Taste in KeyEvent? AWT, Swing, JavaFX & SWT 4
M KeyEvent - Programm mit ESC beenden AWT, Swing, JavaFX & SWT 7
S KeyEvent im JPanel AWT, Swing, JavaFX & SWT 3
G KeyEvent - Probleme AWT, Swing, JavaFX & SWT 6
G Suche einen KeyEvent für die Taste "ä" AWT, Swing, JavaFX & SWT 7
Ghostman1711 Java JFormattedTextfield MaskFormatter ohne Leerzeichen AWT, Swing, JavaFX & SWT 3
P Swing JLabel Schriftzeichen Abstand Leerzeichen AWT, Swing, JavaFX & SWT 4
M leerzeichen aus string entfernen AWT, Swing, JavaFX & SWT 3
A StringTokenizer mit Leerzeichen AWT, Swing, JavaFX & SWT 2
S JFileChooser Pfadübergabe mit Leerzeichen geht nicht AWT, Swing, JavaFX & SWT 6
G JComboBox mit leerzeichen an erster stelle AWT, Swing, JavaFX & SWT 13

Ähnliche Java Themen

Neue Themen


Oben