我有两个JTextField从用户那里获取数字,如下所示:
nbMuscle = new JTextField();
nbMuscle.setText("2");
和此:
nbFuyard = new JTextField();
nbFuyard.setText("1");
我的JTextArea()会添加两个JTextField的值,如下所示:
nbPersonnages = new JTextArea();
int nombMusc = Integer.valueOf(nbMuscle.getText());
int nombFuy = Integer.valueOf(nbFuyard.getText());
int nbTotal = nombMusc + nombFuy;
nbPersonnages.setText(String.valueOf(nbTotal));
它就像一个魅力,但我有一个问题,如果用户编辑其中一个JTextFields,JTextArea值不会改变。我在互联网上发现了一些像jTextArea.appened(String str)这样的概念,但它不起作用。
知道我能做什么吗?
答案 0 :(得分:4)
您必须向TextFields的基础DocumentListener
添加Document
以收听程序运行时所做的更改。
最简单的方法是使用匿名类。
这是代码:
nbMuscle = new JTextField();
nbMuscle.setText("2");
nbFuyard = new JTextField();
nbFuyard.setText("1");
nbPersonnages = new JTextArea();
DocumentListener dl = new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
textChanged();
}
@Override
public void insertUpdate(DocumentEvent e) {
textChanged();
}
@Override
public void changedUpdate(DocumentEvent e) {
// This method is not called when the text of the Document changed, but if attributes of the Document changed.
}
private void textChanged() {
int nombMusc = Integer.valueOf(nbMuscle.getText());
int nombFuy = Integer.valueOf(nbFuyard.getText());
int nbTotal = nombMusc + nombFuy;
nbPersonnages.setText(String.valueOf(nbTotal));
}
};
int nombMusc = Integer.valueOf(nbMuscle.getText());
int nombFuy = Integer.valueOf(nbFuyard.getText());
int nbTotal = nombMusc + nombFuy;
nbPersonnages.setText(String.valueOf(nbTotal));
nbMuscle.getDocument().addDocumentListener(dl);
nbFuyard.getDocument().addDocumentListener(dl);