import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.AbstractAction; import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.KeyStroke; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; public class ClipboardHanger { public static void main(String[] args) { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(400, 300); f.setLocationRelativeTo(null); final WriteDoc doc = new WriteDoc(); final JEditorPane ta = new JEditorPane(); ta.setDocument(doc); f.setLayout(new BorderLayout()); f.add(ta); String KEY = "KEY"; ta.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.CTRL_MASK, false), KEY); ta.getActionMap().put(KEY, new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { doc.writeLockPub(); try { for (int i = 0; i < doc.getLength(); i += 10) { doc.insertString(i, " ", null); } } catch (BadLocationException f) { Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.SEVERE, f.getLocalizedMessage(), f); } finally { doc.writeUnlockPub(); } } }); f.setVisible(true); } static class WriteDoc extends PlainDocument { public void writeLockPub() { super.writeLock(); } public void writeUnlockPub() { super.writeUnlock(); } } }