根据用户 JTextField 值动态更新 JTextArea
Update a JTextArea dynamically depending on users JTextField values
我有两个 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) 但它不起作用。
知道我能做什么吗?
您必须将 DocumentListener
添加到 TextFields 的基础 Document
以侦听程序运行时所做的更改。
最简单的方法可能是匿名 class。
这是代码:
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);
我有两个 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) 但它不起作用。
知道我能做什么吗?
您必须将 DocumentListener
添加到 TextFields 的基础 Document
以侦听程序运行时所做的更改。
最简单的方法可能是匿名 class。
这是代码:
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);