封装一个 JFrame,标题为“计算的窗口”,在该窗口中组件的布局是 FlowLayout. 窗u中添加两个文本区,当在一个文本区中输入若干个数时,另一个文本区同时对输入的数进行求和运算并求出平均值,也就是说随着输入的变化,另一个文本区不断地更新求和及平均值。
时间: 2024-11-30 12:20:25 浏览: 19
在Java Swing编程中,你可以按照以下步骤封装一个JFrame并实现你描述的功能:
```java
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CalculationWindow extends JFrame {
private JTextField inputField; // 输入数值的文本框
private JTextField resultField; // 显示结果的文本框
private double sum = 0; // 求和变量
private int count = 0; // 数字计数
public CalculationWindow() {
setTitle("计算的窗口");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
setLocationRelativeTo(null); // 居中显示
setLayout(new FlowLayout());
// 创建输入文本框
inputField = new JTextField();
add(inputField);
// 创建结果显示文本框
resultField = new JTextField(sum + "/" + count + " (Average: N/A)");
resultField.setEditable(false);
add(resultField);
// 添加动作监听器处理输入事件
inputField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String value = inputField.getText();
try {
double num = Double.parseDouble(value);
sum += num;
count++;
resultField.setText(String.format("%d/%.2f (%.2f)", count, sum, sum / count));
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(CalculationWindow.this, "请输入数字", "错误", JOptionPane.ERROR_MESSAGE);
resultField.setText("Invalid input");
}
}
});
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
CalculationWindow window = new CalculationWindow();
window.setVisible(true);
});
}
}
```
在这个例子中,我们创建了一个名为`CalculationWindow`的JFrame,设置了FlowLayout布局。然后,我们在窗口中添加了两个文本框,一个是用于输入数值,另一个显示实时的求和结果和平均值。通过监听输入字段的事件,每当用户输入新的数值,程序会计算总和并更新结果显示。
注意,由于每次输入都会刷新结果,如果用户快速连续输入,可能会导致平均值暂时不准确,直到下一次完整的输入循环完成。此外,在实际应用中,你可能需要处理更多边界情况和异常,比如清空输入等。
阅读全文