我在一个JTable的行选择事件里把JTable里的一些值赋给了一些变量。在刷新表格的时候把新的模式
赋给原来的JTable再repaint() 。会抛出下标越界的异常。 经过测试 发现如果去掉那些赋值语句就可以了。 这是为什么阿? 怎么解决?相关代码如下:
//菜单表格选择事件处理
class listSelection2 implements ListSelectionListener
{
public void valueChanged(ListSelectionEvent e)
{
if (!e.getValueIsAdjusting())
{
int selectedRow=menuTable.getSelectedRow();
/* foodclass=String.valueOf(menuTable.getValueAt(selectedRow,1));
foodname=String.valueOf(menuTable.getValueAt(selectedRow,2));
unit=String.valueOf(menuTable.getValueAt(selectedRow,3));
price=Float.parseFloat(String.valueOf(menuTable.getValueAt(selectedRow,4)));*/
code.setText(foodname);
}
}
}
//增加消费窗口按钮事件处理
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==serchbt)
{
if(!iscode(code.getText()))
{
menuTable.setModel(creatMenuTableMod("select * from FoodMenuTbl where Name like '%"+code.getText()+"%'"));
}
else
{
menuTable.setModel(creatMenuTableMod("select * from FoodMenuTbl where ID like '%"+code.getText()+"%'"));
}
menuTable.repaint();
}
赋给原来的JTable再repaint() 。会抛出下标越界的异常。 经过测试 发现如果去掉那些赋值语句就可以了。 这是为什么阿? 怎么解决?相关代码如下:
//菜单表格选择事件处理
class listSelection2 implements ListSelectionListener
{
public void valueChanged(ListSelectionEvent e)
{
if (!e.getValueIsAdjusting())
{
int selectedRow=menuTable.getSelectedRow();
/* foodclass=String.valueOf(menuTable.getValueAt(selectedRow,1));
foodname=String.valueOf(menuTable.getValueAt(selectedRow,2));
unit=String.valueOf(menuTable.getValueAt(selectedRow,3));
price=Float.parseFloat(String.valueOf(menuTable.getValueAt(selectedRow,4)));*/
code.setText(foodname);
}
}
}
//增加消费窗口按钮事件处理
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==serchbt)
{
if(!iscode(code.getText()))
{
menuTable.setModel(creatMenuTableMod("select * from FoodMenuTbl where Name like '%"+code.getText()+"%'"));
}
else
{
menuTable.setModel(creatMenuTableMod("select * from FoodMenuTbl where ID like '%"+code.getText()+"%'"));
}
menuTable.repaint();
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货