我正在为员工管理系统编写程序。现在,我正在为员工注册创建CRUD表单,我在数据层,业务逻辑和gui中分离了src代码。在gui中,我将gui视图和gui模型分开了, Gui模型我创建了一个EmployeeTableModel,以指定我要如何显示employee Table的数据,但是在该表中我得到了来自多个表的数据,一个是数据库中的Employee表,另一个是Phone ..我已经成功获取来自Employee Table的数据,我可以将这些数据放入数据库的Employee Table和Phone表中,但是我无法将它们放入TableModel中,只能从employee中获取数据。
我尝试更改EmployeeTableModel中的代码以接受更多列并提供一种从电话表中添加数据的方法,但是由于每个员工都有2个-3电话号码并且Employee_ID被指定为外部用户,所以该方法没有起作用电话表上的密钥..正如我所说,每位员工有3个电话,当我们指定要获取的电话时,它是与employee_id有关的,这是电话表中的外键。
public class PunetoriTableModel extends AbstractTableModel {
List<Punetori> list;
TelefoniRepository tr = new TelefoniRepository();
PunetoriRepository pr = new PunetoriRepository();
String[] cols = {"Nr.", "Nr-Departmentit", "Emri", "Mbiemri", "Email", "Qyteti","Adresa","tel1","tel2"};
public PunetoriTableModel() {
}
public PunetoriTableModel(List<Punetori> list) {
this.list = list;
}
public void addList(List<Punetori> list) {
this.list = list;
}
@Override
public String getColumnName(int col) {
return cols[col];
}
@Override
public int getRowCount() {
return list.size();
}
public void remove(int row) {
list.remove(row);
}
public Punetori getPersoni(int index) {
return list.get(index);
}
@Override
public int getColumnCount() {
return cols.length;
}
public String getDateToString(Date d) {
DateFormat da = new SimpleDateFormat("dd-MM-yyyy");
return da.format(d);
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Punetori p = list.get(rowIndex) ;
switch (columnIndex) {
case 0:
return p.getPunetoriID();
case 1:
return p.getDepartmentiId();
case 2:
return p.getEmri();
case 3:
return p.getMbiemri();
case 4:
return p.getEmail();
case 5:
return p.getQyteti();
case 6:
return p.getAdresa();
default:
return null;
}
}
}
答案 0 :(得分:0)
首先确定您的列将是什么。当某些员工使用多个电话时,您似乎对这些列应该是什么感到困惑。目前尚不清楚您的问题是什么,但可能只是将其画在一张纸上已经可以使您头脑清醒。
还要确定这些列是固定的还是动态的(即是否有可能为某些雇员增加更多的列,您需要将它们添加到表中?)
第二,创建一个单独的数据结构,让我们调用此类EmployeeData
,该类捕获所需的信息。将此与PunetoriTableModel
分开。从您的数据存储库中填充。
在其中放进了必要的逻辑,该逻辑决定了要使用哪个电话,或者需要什么自定义业务逻辑。
使EmployeeData
提供一些公共方法,例如getColumns()
,getRowCount()
和getRow(int i)
等。
在您的PunetoriTableModel
的构造函数中,只需传递EmployeeData
,并在各个方法内部调用EmployeeData
。这样,表模型将数据视为一个表,并且您具有自定义逻辑,该逻辑将来自不同表的数据组合成一个单独的数据。