0
我从用户输入创建一个JTable。在GUI中有一组单选按钮,当选择一个时,它需要更新表格中列的所有值。ArrayIndexOutOfBounds当在JTable中设置单元格的值时
我得到一个arrayIndexOutofBounds错误与此。不完全确定我做错了什么。任何输入将不胜感激,因为这是我第一次使用jtable,它比我想象的要难。
代码在那里我得到一个错误:
class RadioListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(oneRadio.isSelected())
{
payAMT = payAMT * .01;
for(int i = 1; i < outputTable.getRowCount(); i++)
{
outputTable.setValueAt(payAMT,i,4);
}
}
代码:
//JTableCreation
model = new DefaultTableModel(new String[] {"Emp Num", "Base Pay", "Hours Worked", "Pay Amt"}, 0);
outputTable = new JTable();
outputTable.setModel(model);
JScrollPane scroll = new JScrollPane(outputTable);
更多的代码 //将项添加到JTable中
class clickListener implements ActionListener
{
@SuppressWarnings("unchecked")
public void actionPerformed(ActionEvent e)
{
int empNum = 0;
double hourlyRate = 0;
double hoursWorked = 0;
try
{
empNum = Integer.parseInt(empNumField.getText());
}
catch(NumberFormatException event)
{
JOptionPane.showMessageDialog(null, "Invalid entry.\n\nPlease enter a number for the Employee ID.", "Error", JOptionPane.WARNING_MESSAGE);
return;
}
try
{
hourlyRate = Double.parseDouble(basePayField.getText());
}
catch(NumberFormatException event)
{
JOptionPane.showMessageDialog(null, "Invalid entry.\n\nPlease enter a number for the Hourly Pay Rate.", "Error", JOptionPane.WARNING_MESSAGE);
return;
}
try
{
hoursWorked = Double.parseDouble(hrsField.getText());
}
catch(NumberFormatException event)
{
JOptionPane.showMessageDialog(null, "Invalid entry.\n\nPlease enter a number for the Hours Worked.", "Error", JOptionPane.WARNING_MESSAGE);
return;
}
payAMT = calculatePay(hourlyRate, hoursWorked);
Object[] newRecord = {empNum,hourlyRate,hoursWorked,payAMT};
model.addRow(newRecord);
totalPayAMT += payAMT;
totalPayLabel.setText("Total Employee Pay: "+totalPayAMT);
}
}
也许您想开始循环在索引0而不是1? – csmckelvey
我在发帖之前试过两种方法。同样的错误。 – Justiciar
所以,当这段代码产生这个错误时,给我们一个特定的场景。列表为空时会发生吗?当它有一个元素时会发生吗?有很多元素时会发生吗?当您在调试器中浏览代码时,您发现了哪些相关信息?既然你不显示堆栈跟踪,你怎么确定你指出的代码行是问题? – csmckelvey