[英]show character count in swing gui
我有一个名为taMessage
的JTextArea
,它显示消息字符串。 用户可以在运行时编辑此字符串。
我有一个JLabel lblLength
来显示字符数。 我正在使用lblLength.setText(taMessage.getText().length()+"/ 160");
显示字符数。
我应该为taMessage使用哪个事件侦听器,以便在我在文本区域中键入文本时,lblLength能够不断更新自身?
就像我们在way2sms或160by2这样的站点中看到的那样,它显示了剩余的字符数。
以类似于MVC的方式,您可以收听文档的更改。
JTextArea ta = ...;
JLabel lblLength = ...;
Document taDoc = ta.getDocument();
taDoc.addDocumentListener(new CharacterCounterDocumentListener(lblLength))
public class CharacterCounterDocumentListener implements DocumentListener {
private JLabel counterLabel;
public CharacterCounterDocumentListener(JLabel counterLabel){
this.counterLabel = counterLabel;
}
public void changedUpdate(DocumentEvent e) {
Document d = e.getDocument();
int length = d.getLength();
counterLabel.setText(Integer.toString(length));
}
public void insertUpdate(DocumentEvent e) {
}
public void removeUpdate(DocumentEvent e) {
}
}
DocumentListener可能是您最好的选择。 您甚至不需要创建新类,只需内联定义它即可。
// Listen for changes in the text
taMessage.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
update();
}
public void removeUpdate(DocumentEvent e) {
update();
}
public void insertUpdate(DocumentEvent e) {
update();
}
public void update() {
lblLength.setText(taMessage.getText().length()+"/ 160");
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.