我有一个DocumentListener来查找JTextField中的任何更改:
public class MyDocumentListener implements DocumentListener {
static String text;
public void insertUpdate(DocumentEvent e) {
updateLog(e);
}
public void removeUpdate(DocumentEvent e) {
updateLog(e);
}
public void changedUpdate(DocumentEvent e) {
//Plain text components do not fire these events
}
public static String passText() {
System.out.println("string that will be passed is: "+text);
return text;
}
public void updateLog(DocumentEvent e) {
Document doc = (Document)e.getDocument();
int length = e.getLength();
try {
text = doc.getText(0, length);
} catch (BadLocationException e1) {
e1.printStackTrace();
}
System.out.println("you typed "+text);
}
}
然后,在另一个班级:
String info = MyDocumentListener.passText();
问题是我只获得一个字符,而不是整个字符串。有什么建议吗?
答案 0 :(得分:3)
您获取更改的长度而不是文档的长度:
int length = e.getLength(); // probably 1
应该是
int length = doc.getLength();
答案 1 :(得分:0)
paislee提供的答案确实是正确的。你想添加另一种方法来做同样的事情。您可以使用绑定,它添加了ValueHolders的概念,这些变量将存储和反映imediatley图形组件的任何属性更改。它可以提供一种非常有效的方法来实现使用Swing的MVC设计模式,因为Model-Controller-View之间的通信更加有效并且解耦。
JGoodies有一个优秀的开源实现。如果您可以花一些时间并希望改进您的设计,请不要犹豫,看看。