java和ctrl+中的DocumentFilter;v不起作用
当我尝试使用此文档过滤器时,ctrl+v和ctrl+c不起作用java和ctrl+中的DocumentFilter;v不起作用,java,copy-paste,documentfilter,Java,Copy Paste,Documentfilter,当我尝试使用此文档过滤器时,ctrl+v和ctrl+c不起作用 public class stringLengthTrim extends DocumentFilter { private int limit; public stringLengthTrim(int limit) { this.limit = limit; } @Override public void insertString(FilterBypass fb, int offset, String string,
public class stringLengthTrim extends DocumentFilter {
private int limit;
public stringLengthTrim(int limit) {
this.limit = limit;
}
@Override
public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException {
Document innerDoc = fb.getDocument();
StringBuilder sb = new StringBuilder(innerDoc.getText(0, innerDoc.getLength()));
sb.insert(offset, string);
if (textOK(sb.toString())) {
super.insertString(fb, offset, string, attr);
}
}
@Override
public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
Document innerDoc = fb.getDocument();
StringBuilder sb = new StringBuilder(innerDoc.getText(0, innerDoc.getLength()));
int start = offset;
int end = offset + length;
sb.replace(start, end, text);
if (textOK(sb.toString())) {
super.replace(fb, offset, length, text, attrs);
}
}
@Override
public void remove(FilterBypass fb, int offset, int length)
throws BadLocationException {
super.remove(fb, offset, length);
}
private boolean textOK(String text) {
if (text.length() <= limit) {
return true;
}
return false;
}
}
contentID
是一个JTextarea。它对我很有用。你能比“不起作用”更具体一点吗?你看到了什么行为?如果您编辑您的问题并包含在您的JTextField或JTextArea上安装此DocumentFilter的代码,则会有所帮助。当我尝试使用ctrl+v通过JTextArea或JTextField中的文本时,cpoied文本不会通过<代码>明文cID=(明文)contentID.getDocument();cID.setDocumentFilter(新stringLengthTrim(9))代码>粘贴的字符是否少于十个?非常感谢@VGR。问题解决了。我复制的文本超过最大值。我工作很努力,我很累;-)
PlainDocument cID = (PlainDocument) contentID.getDocument();
cID.setDocumentFilter(new stringLengthTrim(9));