使用分隔面板,在面板的上下区间内,各做一个表格显示数据库的数据,上区表格点击任意行时,下去表格根据选中的行找出与之对应的另一个表中的数据集.(在我的OA项目--客户管理中实现)
以下是抽取的两个表格显示的方法:
private void tup(String Tsql) {
String sql;
db = new dbsql();
db.connect();
if (Tsql.equals(" "))
sql = "select 客户编号=CID,客户名称=Cname,联系电话=Ctel,邮件=Cmail,公司地址=Cdz from client";
else
sql = "select 客户编号=CID,客户名称=Cname,联系电话=Ctel,邮件=Cmail,公司地址=Cdz from client";
rs = db.query(sql);
modelup = new ResultSetTableModel(rs);
panel_up = new JPanel();
panel_up.setLayout(new BorderLayout());
splitPaneVR.setLeftComponent(panel_up);
scrollPane_up = new JScrollPane();
panel_up.add(scrollPane_up, BorderLayout.CENTER);
table_up = new JTable(modelup);
table_up.addMouseListener(new MouseAdapter() {
public void mouseClicked(final MouseEvent arg0) {
int row = table_up.getSelectedRow(); // 获得当前选中的行号
ID = modelup.getValueAt(row, 0);
}
});
scrollPane_up.setViewportView(table_up);
}
private void tdown(String Dsql) {
String sql;
db = new dbsql();
db.connect();
if (Dsql.equals(" "))
sql = "select 联系人编号=TID,姓名=Tname,性别=Tsex,联系电话=Ttel,邮件=Tmail,所属部门=Tdept from contact";
else
sql = "select 联系人编号=TID,姓名=Tname,性别=Tsex,联系电话=Ttel,邮件=Tmail,所属部门=Tdept from contact";
rs = db.query(sql);
modeldown = new ResultSetTableModel(rs);
panel_down = new JPanel();
panel_down.setLayout(new BorderLayout());
splitPaneVR.setRightComponent(panel_down);
scrollPane_down = new JScrollPane();
panel_down.add(scrollPane_down, BorderLayout.CENTER);
table_down = new JTable(modeldown);
scrollPane_down.setViewportView(table_down);
}
以上红字部分修改前都是model,结果运行时出现异常,Invalid operation for the current cursor position--游标位于结果集首行之前,后来修正后正常.