java 的表格table操作问题
1.用model.removeRow(table.getSelectedRow());删除选择行就跳出Arrayindexoutofrange:-1的错误,为啥会出现-1...
1.用model.removeRow(table.getSelectedRow());删除选择行就跳出Array index out of range: -1的错误,为啥会出现-1?
2.数据库的数据读入表中,往数据库添加数据后如何刷新表的数据(查询添加数据到表的部分在一个类的构造函数中,把表添加到窗口框架的部分在另一个类的构造函数中),找到table.invalidate();说是更新表格,该怎么用?
3.oracle相关:给主键以序列自动+1,那删除数据行时-1添加时+1该用什么方法
myData.addColumn("序号");
myData.addColumn("学号");
myData.addColumn("姓名");
myData.addColumn("性别");
myData.addColumn("年龄");
myData.addColumn("班级");
try //提取班级信息赋给表
{
ArrayList<Object> al=DataBaseClass.execQuery("select StuID,StuNo,StuName,StuSex,StuAge,classname from T_Student s,T_Class c where s.classid=c.classid",new T_Student());
int x=al.size();
for(int i=0;i<x;i++)
{
T_Student ts=(T_Student)al.get(i);
myData.addRow(new Object[]{ts.getStuID(),ts.getStuNo(),ts.getStuName(),ts.getStuSex(),ts.getStuAge(),ts.getClassName()});
}
}
catch (SQLException e)
{
e.printStackTrace();
}
jTable=new JTable(myData);
scrollPane=new JScrollPane(jTable);
建表和数据填充到此为止。。。然后另一个类中滚动条添加到窗体
contentPane.add(mfCM.scrollPane, java.awt.BorderLayout.NORTH);//将滚动条加入系统面板
在面板类有按键触发删除。。已经写不下了OTL 展开
2.数据库的数据读入表中,往数据库添加数据后如何刷新表的数据(查询添加数据到表的部分在一个类的构造函数中,把表添加到窗口框架的部分在另一个类的构造函数中),找到table.invalidate();说是更新表格,该怎么用?
3.oracle相关:给主键以序列自动+1,那删除数据行时-1添加时+1该用什么方法
myData.addColumn("序号");
myData.addColumn("学号");
myData.addColumn("姓名");
myData.addColumn("性别");
myData.addColumn("年龄");
myData.addColumn("班级");
try //提取班级信息赋给表
{
ArrayList<Object> al=DataBaseClass.execQuery("select StuID,StuNo,StuName,StuSex,StuAge,classname from T_Student s,T_Class c where s.classid=c.classid",new T_Student());
int x=al.size();
for(int i=0;i<x;i++)
{
T_Student ts=(T_Student)al.get(i);
myData.addRow(new Object[]{ts.getStuID(),ts.getStuNo(),ts.getStuName(),ts.getStuSex(),ts.getStuAge(),ts.getClassName()});
}
}
catch (SQLException e)
{
e.printStackTrace();
}
jTable=new JTable(myData);
scrollPane=new JScrollPane(jTable);
建表和数据填充到此为止。。。然后另一个类中滚动条添加到窗体
contentPane.add(mfCM.scrollPane, java.awt.BorderLayout.NORTH);//将滚动条加入系统面板
在面板类有按键触发删除。。已经写不下了OTL 展开
2个回答
展开全部
第一个问题:你的数组越界操作了。
第二个问题:你可以选择重新加载下该页面,或者重新加载下该表。
第三个问题:如果你没有用到框架的话,那添加就用default代替主键。
第二个问题:你可以选择重新加载下该页面,或者重新加载下该表。
第三个问题:如果你没有用到框架的话,那添加就用default代替主键。
更多追问追答
追问
1.知道是越界,但是表格创建都是现成的函数啊,getSelectedRow()选择的行不是必定从1开始的么,即使是下标也不应该是-1啊
2.用new的方式重新构造一次但是无效,加载是什么操作?
3.default是要用触发器来实现吗
追答
你把你的代码能发下么,我看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.getSelectedRow()返回第一个选定行的索引;如果没有选定的行,则返回 -1。
2.表格的数据是随时可以变化的,你可以使用DefaultTableModel,数据库插入数据之后先用model.setRowCount(0);清空当前数据,然后重新查询,用model.addRow将结果重新插入表格。
3.Oracle主键自增用sequence,没必要删除的时候再-1,具体你可以搜索一下。
2.表格的数据是随时可以变化的,你可以使用DefaultTableModel,数据库插入数据之后先用model.setRowCount(0);清空当前数据,然后重新查询,用model.addRow将结果重新插入表格。
3.Oracle主键自增用sequence,没必要删除的时候再-1,具体你可以搜索一下。
更多追问追答
追问
1.妥妥的选定了啊。。难道是要和建表的部分写一起才行?
2.我去试试。。不过我整个插入表的流程分在两个类里不知道调用行不行
3.那添加后显示序列就越来越大啊,比如{SEQ.Naxtval,"a"}这样从1开始插入三个,序列为三,删除1后再插入一个序列就是2、3、4没有1了,自动增减如果不用主键列能实现吗?
追答
1. getSelectedRow() 的调用时机,如果在表格还没选中某行时候调用就会有问题。再或者看看model是否是选定表格的model。
3. 不知道你要这个序号做什么,如果是想做表的ID用,那么学号或者自增的数值都可以满足,如果只是想在界面显示用,就没必要做成一个数据库字段了。 即使你用存储过程实现了,当你删除第一个数据的时候,后边所有的数据的序号都要-1?那么代价就太大了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询