计算已有的jtable中的平均数并用一个窗口显示输出
时间: 2024-03-09 18:44:46 浏览: 73
好的,以下是一个完整的示例代码,可以在 Java Swing 环境下运行:
```java
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class AverageCalculatorGUI {
private JFrame frame;
private JTable table;
public AverageCalculatorGUI() {
initialize();
}
private void initialize() {
// 创建 JFrame 窗口
frame = new JFrame("平均分计算器");
frame.setBounds(100, 100, 400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建 JTable 对象
String[] columnNames = {"姓名", "学科1", "学科2", "学科3"};
Object[][] rowData = {
{"张三", 90.0, 80.0, 70.0},
{"李四", 85.0, 75.0, 65.0},
{"王五", 95.0, 85.0, 75.0},
{"赵六", 80.0, 70.0, 60.0}
};
DefaultTableModel model = new DefaultTableModel(rowData, columnNames);
table = new JTable(model);
// 创建 JScrollPane 对象
JScrollPane scrollPane = new JScrollPane(table);
frame.getContentPane().add(scrollPane);
// 创建计算平均分的按钮
JButton btnCalculate = new JButton("计算平均分");
btnCalculate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
double average = AverageCalculator.calculateAverage(table, 1);
JOptionPane.showMessageDialog(frame, "平均分:" + average);
}
});
frame.getContentPane().add(btnCalculate, BorderLayout.SOUTH);
// 显示窗口
frame.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
AverageCalculatorGUI window = new AverageCalculatorGUI();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
class AverageCalculator {
public static double calculateAverage(JTable table, int column) {
double sum = 0;
int rowCount = table.getRowCount();
for (int i = 0; i < rowCount; i++) {
sum += Double.parseDouble(table.getValueAt(i, column).toString());
}
return sum / rowCount;
}
}
```
该示例代码中包含一个 JTable 表格和一个计算平均分的按钮。当用户点击按钮时,程序会通过 AverageCalculator 类计算 JTable 中第 2 列的平均分,并使用 JOptionPane 弹窗显示计算结果。
你可以根据自己的需求修改和扩展该示例代码。
阅读全文
相关推荐












