Veröffentlicht 15. Februar 200817 j 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]
16. Februar 200817 j 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
18. Februar 200817 j (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
18. Februar 200817 j 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); } }
18. Februar 200817 j 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ß
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.