java.awt.datatransfer
package that are relevant to copy and paste.
The getSystemClipboard()
method of the java.awt.Toolkit
class returns a Clipboard
object which represents
the system clipboard:
public abstract Clipboard getSystemClipboard()
The java.lang.SecurityManager
class includes a
checkSystemClipboardAccess()
method that determines whether
or not this program is allowed to access the system clipboard.
The method is void but throws a SecurityException
if access is not allowed.
public void checkSystemClipboardAccess()
The concern is that the clipboard may contain private data
which the user would not want revealed to the server. As a general
rule, applets loaded from web servers will not be allowed
to access the system clipboard. This does not, however,
apply to private clipboards you create. For example,
try {
SecurityManager sm = SecurityManager.getSecurityManager();
if (sm != null) sm.checkSystemClipboardAccess();
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
//... handle clipboard
}
catch (SecurityException e) {
System.err.println("Cannot access the system clipboard");
}
The java.awt.TextComponent
class, which both
TextArea
and TextField
extend,
has a getSelectedText()
method that returns the
current value of the selection as a String:
public synchronized String getSelectedText()
You'll often use this method to decide what to copy or cut. Several other
TextComponent
methods are also useful for manipulating the selection:
public synchronized int getSelectionStart()
public synchronized void setSelectionStart(int selectionStart)
public synchronized void setSelectionEnd(int selectionEnd)
public synchronized void select(int selectionStart, int selectionEnd)
public synchronized void selectAll()
public void setCaretPosition(int position)
public int getCaretPosition()
The TextArea
class (but not the TextField
class)
also has insert()
and replaceRange()
methods you can use for pasting:
public synchronized void insert(String s, int pos)
public synchronized void replaceRange(String s, int start, int end)
What's the difference between these two methods? When would you use insert()
and when would you use replaceRange()
?