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

Z0M813

Mitglied
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.
 
Hallo.

Ja sowas vielleicht? 🙂

Java:
 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
 
Zuletzt bearbeitet:
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
Code:
Sprache.equals("DE")
. Muss man Sprache vorher als irgendwas definieren oder muss da was ganz anderes hin?
 
Oops. Einfach (Sprache.equals("DE") ? "Einfügen" : "Paste") mit "Einfügen" ersetzen und bei den anderen ebenso mit dem passenden ersetzen. 🙂
 
Klappt alles🙂

Aber müssen die auch drin sein?
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?
 

Neue Themen


Zurück
Oben