Upper Case während der Eingabe

Ole

Grünschnabel
Hallo alle zusammen!

Ich bin gerade dabei eine Projektarbeit fürs Studium zu programmieren. In meinem Programm gibt es Eingabefeld in Form einer TextArea. Nun möchte ich gerne, dass sobald ich etwas in dieses Feld schreibe, es direkt in Großbuchstaben erscheint.

Der KeyListener sieht wie folgt aus:

Code:
jTextArea.addKeyListener(new java.awt.event.KeyAdapter() 
{
	public void keyTyped(java.awt.event.KeyEvent e) 
	{
		jTextArea.setText(jTextArea.getText().toUpperCase());
	}
});

Das ganze funktioniert leider nur bedingt. Der letzte Buchstabe bleibt immer klein (Ausser man drückt halt irgendeine andere Taste die kein Character ist). Ausserdem funktionieren Tastenkombinationen wie Strg+A nicht mehr.

Google hat da leider auch nichts brauchbares ausgespuckt.
Wäre super wenn mir da jemand weiterhelfen könnte.

Gruß,
Ole
 
Ja das funktioniert schon besser. Nur sind die Tastenkombinationen jetzt immer noch nicht möglich. Ist zwar nicht soo schlimm aber wäre halt schöner.

Gibt es keine Möglichkeit die permanenten Großbuchstaben als Eigenschaft der TextArea zu deklarieren? Über die set Methoden geht es nicht das weiss ich aber vielleicht gibts ja noch eine andere Möglichkeit
 
Nein noch nicht aber werde ich jetzt mal durchlesen und das versuchen. Sieht zumindest vielversprechend aus
 
Also JFormattedTextField geht nicht. Das ist dann nur ein einzeiliges Textfeld in dem man bestimmte Zeichen in einer bestimmten Formatierung und Anzahl eintragen kann.

Mehrzeilige Texte sind damit nicht möglich. Es lässt sich auch nicht setLineWrap() darauf anwenden um den wortweisen Zeilenumbruch ein/auszuschalten.

War aber ne gute Idee. Vielen Dank :)
 
Dein Problem ist, dass in dem Textfeld der Buchstabe der gerade eingegeben wurde noch gar nicht drin ist. Der ist ja noch nicht fertig mit dem Event. Also musst du das auf dem Event setzen:

Java:
public static void main(String[] args) {
	JFrame frame = new JFrame( );
	frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	frame.setSize(100, 100);
	JTextField field = new JTextField( );
	field.addKeyListener(new KeyAdapter( ) {

		@Override
		public void keyTyped(KeyEvent e) {
			if (!Character.isUpperCase(e.getKeyChar( ))) {
				e.setKeyChar(Character.toUpperCase(e.getKeyChar( )));
			}
		}
	});
	frame.add(field, BorderLayout.CENTER);
	frame.setVisible(true);
}
 
Jetzt gehts. Vielen Dank zeja!
Den anderen natürlich auch Danke, dass ihr euch die Zeit genommen habt :)
 

Neue Beiträge

Zurück