Java JTable未更新其他股票估值问题求助
解决方案
核心思路
你当前的代码仅处理选中的单支股票,其他股票因价格变动导致估值无法同步更新。可以通过统一管理股票价格+批量遍历更新所有估值的方式解决,无需手动逐个编写分支处理每支股票。
具体修改步骤
- 将分散的股票价格变量(
newABCPrice、newBMCPrice)整合到数组中,数组索引对应JTable的行号:
// 后续新增股票直接往数组追加元素即可 double[] stockPrices = {newABCPrice, newBMCPrice};
- 先处理选中股票的持有数量更新,再遍历所有股票行批量计算并更新估值:
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
相关产品推荐
相关产品推荐

