Tôi đang gặp sự cố khi thêm văn bản vào JTextArea sau khi sử dụng DocumentFilter, Tôi cần nối thêm chuỗi trên JTextArea sau khi văn bản được tải lên từ tệp và cũng trả về một chuỗi từ JTextArea của một JFrame khác đến JTextAreaNối văn bản vào JTextArea sau khi sử dụng DocumentFilter
tất cả mọi thứ hoạt động hoàn hảo khi tôi không sử dụng DocumentFilter.FilterBypass cho đến khi tôi thêm nó. Nó vẫn hoạt động một chút nhưng chỉ khi dấu phẩy (,) hoặc dấu cách ("") không được thêm vào. Mà không phải là đặc điểm kỹ thuật tôi đã được đưa ra.
Tôi làm cách nào để giải quyết vấn đề này? Hoặc là có bất kỳ thuật toán hoặc thực hiện mà không cung cấp cho vấn đề này?
Đây là mã insertString để lọc theo chiều dài, và chỉ cho phép không gian và dấu phẩy
public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException {
// if (string == null || string.trim().equals("") || string.equals(","))
// {
// return;
// }
if (isNumeric(string)) {
// if (this.length > 0 && fb.getDocument().getLength() +
// string.length()
// > this.length) {
// return;
// }
if (fb.getDocument().getLength() + string.length() > this.length || string.trim().equals("") || string.equals(",")) {
this.insertString(fb, offset, string, attr);
}
// if (string == null || string.trim().equals("") ||
// string.equals(",")) {
// return;
// }
super.insertString(fb, offset, string, attr);
}
else if (string == null || string.trim().equals("") || string.equals(",")) {
super.insertString(fb, offset, string, attr);
}
}
@Override
public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
if (isNumeric(text)) {
if (this.length > 0 && fb.getDocument().getLength() + text.length() > this.length) {
return;
}
super.insertString(fb, offset, text, attrs);
}
}
/**
* This method tests whether given text can be represented as number. This
* method can be enhanced further for specific needs.
*
* @param text
* Input text.
* @return {@code true} if given string can be converted to number;
* otherwise returns {@code false}.
*/
private boolean isNumeric(String text) {
if (text == null || text.trim().equals("") || text.equals(",")) {
return true;
}
for (int iCount = 0; iCount < text.length(); iCount++) {
if (!Character.isDigit(text.charAt(iCount))) {
return false;
}
}
return true;
}
Hai chức năng khác (thêm từ file & thêm từ một khung khác nhau) Tôi muốn thực hiện một cách ngây thơ bằng cách chỉ phụ thêm giá trị chuỗi của chúng cho JTextArea được lọc bằng cách sử dụng này. Nhưng bị từ chối bởi super.insertString (.....)
Bạn là mã nào sử dụng tại thời điểm đó không hoạt động? Tâm trí đăng nó? – sealz
Không có vấn đề, nhưng mặc dù nó dài. Phải đính kèm mã của hai khung hình – nnanna
có thể chỉ là đoạn trích mà bạn đang cố thêm "," và ""? – sealz