Gast alexC++ Geschrieben 15. Februar 2008 Geschrieben 15. Februar 2008 huhu, ich habe ein textarea und das will ich, auf änderung des textes hin, überprüfen. habe dem tx die methode TA_anzeigeInputMethodTextChanged hinzugefügt der das ausgelöste event behandeln soll. es funktioniert jedoch nicht [B]private void TA_anzeigeInputMethodTextChanged(java.awt.event.InputMethodEvent evt) { JFrame mainFrame = EditorApp.getApplication().getMainFrame(); JOptionPane.showMessageDialog(mainFrame, "Text wurde geändert"); }[/B] Zitieren
kingofbrain Geschrieben 16. Februar 2008 Geschrieben 16. Februar 2008 Servus, wer soll denn Deine Methode aufrufen? Machst Du das selbst? Was funktioniert dann nicht. Ansonsten: wer sollte sie Deiner Meinung nach aufrufen? Soweit ich die API Dokumentation für die java.awt.TextArea gelesen habe, gibt es dort die Methode mit Deinem Namen nicht. Wenn Du allerdings auf InputMethodEvents hören willst, dann füge Deiner TextArea einen entsprechenden Listener hinzu (textArea.addInputMethodListener(listener)). Den Listener kannst Du dann entweder als eigene Klasse in einer .java-Datei notieren, oder als anonyme innere Klasse: textArea.addInputMethodListener(new InputMethodListener() { public void inputMethodTextChanged(InputMethodEvent event) { // mach was } public void caretPositionChanged(InputMethodEvent event) { // mach was } }); Und beim nächsten Mal könntest Du Deine Frage besser stellen. "Geht nicht" ist keine Fehlerbeschreibung Peter Zitieren
Gast alexC++ Geschrieben 18. Februar 2008 Geschrieben 18. Februar 2008 (NetBeans) der listener wird automatisch hinzugefügt. bei den eigenschaften auf events klicken und dann die methode hinzufügen. mit einem anderen event z.B. keyPressed funktioniert es wunderbar. wann wird denn das ereignis inputMethodTextChanged ausgelöst? ich suche ein event, das ausgelöst wird, wenn man den text in der textarea geändert hat. folgender listener wurde hinzugefügt: TA_anzeige.addInputMethodListener(new java.awt.event.InputMethodListener() { public void caretPositionChanged(java.awt.event.InputMethodEvent evt) { } public void inputMethodTextChanged(java.awt.event.InputMethodEvent evt) { TA_anzeigeInputMethodTextChanged(evt); } }); Referenz: java.awt.event.InputMethodListener gruß alex Zitieren
ksg9-sebastian Geschrieben 18. Februar 2008 Geschrieben 18. Februar 2008 so? package test; import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JTextArea; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.BadLocationException; public class TestTextChange { /** * @param args */ public static void main(String[] args) { JFrame frame = new JFrame("Test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JTextArea area = new JTextArea(); area.setColumns(30); area.setRows(10); area.getDocument().addDocumentListener(new DocumentListener(){ @Override public void changedUpdate(DocumentEvent e) { try { System.out.println("text changed: " + e.getDocument().getText(0, e.getDocument().getLength())); } catch (BadLocationException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } @Override public void insertUpdate(DocumentEvent e) { try { System.out.println("text inserted: " + e.getDocument().getText(0, e.getDocument().getLength())); } catch (BadLocationException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } @Override public void removeUpdate(DocumentEvent e) { try { System.out.println("text removed: " + e.getDocument().getText(0, e.getDocument().getLength())); } catch (BadLocationException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }); frame.add(area, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } } Zitieren
Gast alexC++ Geschrieben 18. Februar 2008 Geschrieben 18. Februar 2008 Hallo, das funktioniert so. das müsste doch auch auf meine weise gehen. weißt du, wann das ereignis genau ausgelöst wird? in der beschreibung steht lediglich, wenn sich der text geändert hat. gruß 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.