You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java JTable未更新其他股票估值问题求助

解决方案

核心思路

你当前的代码仅处理选中的单支股票,其他股票因价格变动导致估值无法同步更新。可以通过统一管理股票价格+批量遍历更新所有估值的方式解决,无需手动逐个编写分支处理每支股票。

具体修改步骤

  1. 将分散的股票价格变量(newABCPrice、newBMCPrice)整合到数组中,数组索引对应JTable的行号:
// 后续新增股票直接往数组追加元素即可
double[] stockPrices = {newABCPrice, newBMCPrice};
  1. 先处理选中股票的持有数量更新,再遍历所有股票行批量计算并更新估值:
int selectedOption = jComboBox.getSelectedIndex();
int newAMT = Integer.parseInt(buySellField.getText()); 
System.out.print(selectedOption);

// 更新选中股票的持有数量
if (selectedOption >= 0 && selectedOption < stockPrices.length) {
    Object amtPulled = jTable.getModel().getValueAt(selectedOption, 2);
    int currentAmt = (int) amtPulled;
    int finalAmt = newAMT + currentAmt;
    jTable.getModel().setValueAt(finalAmt, selectedOption, 2);
}

// 遍历所有股票,同步更新估值
for (int row = 0; row < stockPrices.length; row++) {
    Object amtObj = jTable.getModel().getValueAt(row, 2);
    int amt = (int) amtObj;
    double valuation = stockPrices[row] * amt;
    jTable.getModel().setValueAt(df.format(valuation), row, 3);
}

关键点说明

  • 数组管理股票价格后,新增股票无需编写新的if-else分支,只需扩展数组即可
  • 遍历全量行更新估值,既能同步选中股票的数量变更,也能覆盖其他股票的价格变动带来的估值更新需求
  • 增加索引范围判断,避免下拉框选中索引超出股票数量导致的异常

进阶优化(可选)

若后续股票数量较多,建议自定义TableModel,将每支股票的名称、价格、持有数量封装为Stock实体类,实现数据与视图分离。比如在TableModel的setValueAt方法中自动触发估值计算,无需手动遍历更新。

内容的提问来源于stack exchange,提问作者helpmepls

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 03:55:13