# Ausschneiden, Kopieren, Einfügen, Löschen in JTextArea



## Z0M813 (5. Jul 2011)

Hallo,
Kann mir einer sagen, wie das da oben geht?
Das Löschen ist ja wahrscheinlich nicht zu schwierig, oder? Aber das Kopieren, Ausschneiden und Einfügen sollte nicht nur innerhalb des Java-Programms gehen, sondern auch zwischen dem Java-Programm und anderen (Nicht-Java-)Programmen. Es soll natürlich nicht der ganze Text sein, sondern nur der derzeit markierte Bereich.


----------



## truesoul (5. Jul 2011)

Hallo.

Ja sowas vielleicht?  


```
private JTextArea eingabefeld = new JTextArea();
 private JPopupMenu eingabePopup;
 private void setCopyCutPopup() {
        
        eingabePopup = new JPopupMenu();
        if (eingabefeld.getComponentCount() > 0) {
            eingabefeld.remove(eingabePopup);
        }
        JMenuItem paste = new JMenuItem();
        JMenuItem copy = new JMenuItem();
        JMenuItem cut = new JMenuItem();
        eingabePopup.add(paste);
        eingabePopup.add(copy);
        eingabePopup.add(cut);
        eingabefeld.add(eingabePopup);

        final Action actionArray[] = eingabefeld.getActions();
        for (Action a : actionArray) {
            if (a instanceof DefaultEditorKit.PasteAction) {
                a.putValue(Action.NAME, "Einfügen");
                a.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_E);
                a.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_V, Event.CTRL_MASK));
                paste.setAction(a);
            } else if (a instanceof DefaultEditorKit.CopyAction) {

                a.putValue(Action.NAME, "Kopieren");
                a.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_K);
                a.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_C, Event.CTRL_MASK));
                copy.setAction(a);
            } else if (a instanceof DefaultEditorKit.CutAction) {

                a.putValue(Action.NAME, "Ausschneiden");
                a.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_A);
                a.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_X, Event.CTRL_MASK));
                cut.setAction(a);
            }
        }
    }
```

Mfg


----------



## SlaterB (5. Jul 2011)

funktioniert das nicht alles ganz einfach so? Strg-X & Co, schon ausprobiert?


----------



## Z0M813 (5. Jul 2011)

Eigentlich schon, aber ich hatte das auch als Menüeinträge und wollte nicht, dass die Einträge zwar da sind, aber nicht funktionieren...
Bei mir kommt ein Fehler bei 
	
	
	
	





```
Sprache.equals("DE")
```
. Muss man Sprache vorher als irgendwas definieren oder muss da was ganz anderes hin?


----------



## truesoul (5. Jul 2011)

Oops. Einfach (Sprache.equals("DE") ? "Einfügen" : "Paste") mit "Einfügen" ersetzen und bei den anderen ebenso mit dem passenden ersetzen.


----------



## Z0M813 (5. Jul 2011)

Klappt alles

Aber müssen die auch drin sein?


truesoul hat gesagt.:


> a.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_V, Event.CTRL_MASK));


Die habe ich schon woanders für meine Menüeinträge festgelegt...

Und wie sieht das dann für "Löschen" aus? Ist ja nichts anderes als einmal Entfernen drücken, aber gibt es dafür noch eine Methode?


----------

