我将我的keyTyped行为改为默认输出char到JTextArea,但是当我复制和粘贴时,它会产生一个不可显示的字符。
我需要在多个操作系统上工作,因此使用案例22:不起作用,因为这不适用于Mac。 sun是否有一个案例可以捕获粘贴/副本免受操作系统限制,或者有人知道一个好的解决方法吗?
答案 0 :(得分:2)
您可能需要调查document filters。
添加文档过滤器将允许您修改(甚至阻止)添加到JTextArea
文档的字符串。如果您的文本区域使用AbstractDocument
的某个子类作为文档实现,则可以添加自定义文档过滤器。像这样:
AbstractDocument doc = (AbstractDocument)textArea.getDocument();
doc.setDocumentFilter( new DocumentFilter() {
public void insertString( FilterBypass fb, int offset, String string,
AttributeSet attr ) throws BadLocationException
{
// Test string here and modify if required, then call super.insertString()
// (usually called on a "paste")
}
public void replace( FilterBypass fb, int offset, int length,
String text, AttributeSet attrs ) throws BadLocationException
{
// Test string here and modify if required, then call super.replace()
// (usually called when characters are typed)
}
});
(在你的“真实”实现中,你可能想要很好地测试AbstractDocument
实际上是在使用而不是我已经完成的演员。)
答案 1 :(得分:0)
我认为您可以通过以下方式修改剪贴板行为: